CodeBlocks의 컴파일러를 사용하여 소스에서 qt를 컴파일합니다. Qt build all - Qt Creator를 빌드하려면 컴파일러가 필요합니다. 키트 설정의 컴파일러 설정. Windows에서 Qt의 병렬 컴파일

병렬 컴파일 QtCreator를 사용하는 Windows의 Qt 프로젝트는 신비하고 까다로운 짐승입니다. 이 짧은 기사에서는 결국 그것을 길들이는 방법을 알려 드리겠습니다. 병렬 컴파일은 이론상 아주 간단하게 수행될 수 있지만, 모든 종류의 솔루션을 제공하는 포럼 스레드의 끝없는 수에서 알 수 있듯이 실제로 모든 것이 완전히 매끄럽지는 않습니다. 불행히도 그들 중 누구도 우리를 돕지 않았습니다.


이론적으로 MinGW의 경우 다음을 지정하는 것으로 충분합니다. 옵션 -j[컴파일 프로세스 수] MinGW QtSDK에서 mingw32-make로 표시되는 make 빌드 명령. 예를 들어 명령은 mingw32-make.exe -j10입니다.

권장되는 컴파일 프로세스 수는 프로세서 수+1입니다. 매개변수가 설정되지 않은 경우 j=1로 간주됩니다. 너무 큰 숫자를 지정해도 나쁜 일이 발생하지 않습니다. Make는 성능 향상을 제공하는 만큼만 실행됩니다.

편의를 위해 시스템의 프로세서 수를 표시하는 %NUMBER_OF_PROCESSORS% 환경 변수를 사용할 수 있습니다. 형식의 명령이 나옵니다.

Mingw32-make.exe –j%NUMBER_OF_PROCESSORS%

그러나 모든 것이 그렇게 간단하지는 않습니다. Qmake는 3개의 makefile을 생성합니다. 특정 정의에 따라 릴리스 빌드 또는 디버그에 따라 Makefile.Debug 및 Makefile.Release에서 선택하는 일반 Makefile. 사실은 -j 옵션은 상속되지 않습니다.. 그리고 QtCreator에서 make가 호출되면 Makefile에 대해 호출됩니다. 그러나 Makefile.Debug 또는 Makefile.Release에 도달하지 않습니다.

이 문제를 해결하려면 다음을 수행해야 합니다. 명령을 명시적으로 작성. 예를 들어,

Mingw32-make.exe –j9 –f Makefile.Debug.

그다지 편리하지는 않지만 조립 속도가 증가하면 이를 크게 보상합니다. 예를 들어, 병렬화 없이 core-i7-2630에서 프로젝트를 재구축하는 데는 12분이 소요되며 -j9 플래그를 사용하면 빌드가 2분 미만으로 소요됩니다. 생산성의 6배 증가는 생각하게 만듭니다.

그러나 이러한 빌드 플래그를 지정한 후에도 두 대의 시스템에서 작동하기 시작했지만 두 대의 시스템에서는 작동하지 않았습니다. 포럼에서 그들은 문제가 Qt 버전, mingw의 비뚤어짐, qmake의 기능, OS 버전에 있다고 씁니다. 그러나 우리 기계의 구성은 제거 방법에 따라 QtSDK, QtCreator, Windows 버전 또는 시스템의 비트 수가 이 모든 것과 관련이 없다는 결론을 내릴 수 있는 것과 같습니다.

해결책은 매우 간단하지만 동시에 그렇게 명확하지 않습니다. mingw32-make에 절대 경로를 추가해야 합니다. 환경 변수길. 만일을 대비하여 경로 뒤에 세미콜론을 넣는 것이 좋습니다. 그 후 병렬 컴파일이 기적적으로 작동하기 시작하고 프로그래머는 프로젝트에 Q_OBJECT를 추가하고 다시 빌드할 때마다 10분 동안 산만해질 필요가 없습니다.

이러한 모든 컴파일 플래그는 만들기 옵션의 프로젝트 탭 아래에 있는 QtCreator에서 설정할 수 있습니다.

이 기사가 유용하고 이전에 QtCreator에서 병렬 어셈블리가 없었던 많은 사람들의 질문을 해결하기를 바랍니다.

UPD(댓글에서): Linux/MacOS 사용자에 관한 한 훨씬 더 운이 좋습니다. -jX 스위치만 있으면 충분합니다.

또한 MSVC 컴파일러를 사용하는 경우 문제가 없어야 합니다.

QtCreator의 경우 항목을 추가해야 합니다.
QMAKE_CXXFLAGS_RELEASE += -MP[프로세스 수]
.pro 프로젝트 파일에서 내가 설명한 대로 환경 변수를 설정합니다.

언제 비주얼 스튜디오 VS 프로젝트 속성: "속성"=>"구성 속성"=>"C/C++"=>"명령줄". 그리고 "추가 옵션" 필드에 -MP[프로세스 수]를 추가합니다. 감사합니다

또한 MSVC 컴파일러를 사용할 때 jom이 도움이 될 수 있습니다.

플래그의 상수 부분은 별도의 MAKEFLAGS 환경 변수로 이동할 수 있습니다. Make 자체는 거기에서 설정된 플래그를 가져옵니다. 예를 들어 MAKEFLAGS=-j10. 그리고 make 옵션에서 빌드할 파일을 지정하는 것을 잊지 않는 것만 남아 있습니다. 예를 들어 -f Makefile.Debug입니다. 항상 하나의 버전을 빌드한다면 MAKEFLAGS에 기둥의 모든 플래그를 넣고 향후 프로젝트 설정을 잊어버릴 수 있습니다.

추가해 주신 모든 분들께 감사드립니다.

이 기사에서는 운영 체제가 있는 시스템에서 CodeBlocks 프로그래밍 환경 버전 10.05와 함께 제공되는 MinGW 컴파일러를 사용하여 소스에서 Qt 라이브러리 버전 4.8.5를 컴파일한 경험을 설명합니다. 윈도우 시스템경험치

엔진은 노멀맵과 오브젝트 에디터가 필요하기 때문에 GUI 라이브러리를 선택할까 고민했습니다. qt의 널리 퍼진 찬사에 비추어 볼 때 나는 그것을 실행하지 않을 수 없었습니다. 책을 다운로드하고 "qt-win-opensource-4.8.4-mingw" 버전을 설치했습니다. CodeBlocks 버전 10.05가 있습니다. 저는 CodeBlock에서 메인 윈도우 클래스와 메인 모듈을 만들었습니다. 간단히 말해서 메인 윈도우가 있는 가장 간단한 애플리케이션입니다. 나는 실망했다고 말해야합니다. qt 응용 프로그램을 컴파일하고 조립하는 것은 "빌드"항목을 클릭하는 것이 아니라 일련의 사전 설정및 작업, 그리고 일반적으로 다음에서 생성됩니다. 명령줄. 며칠 동안 치질을 앓은 후 나는 이 작은 프로젝트를 메인 창으로 편집했습니다. 그러나 이것을 위해 나는 소스에서 q를 빌드해야했습니다. 사실은 오류가 어떤 식 으로든 수정되기를 원하지 않았으며, 설치된 qt가 다른 버전에서 구축되었다는 사실 때문에 개발자 컴퓨터의 mingw 버전이 설치된 qt와 충돌할 수 있다고 어디선가 읽었습니다. 밍와. 글쎄, 나는 수집하기로 결정했다.
다운로드한 소스 "qt-everywhere-opensource-src-4.8.5.zip". 지금은 이미 다섯 번째 버전이 있지만, 나는 그 때 마지막에서 두 번째 버전을 사용하기로 결정했습니다. 드라이브 "E"(대부분의 경우 일반적으로 D)에서 폴더 "Qt"를 만들었습니다. 아카이브를 거기에 두십시오. 포장을 풀었습니다.
Windows XP에서 모든 작업을 수행했습니다. MinGW 컴파일러는 CodeBlocks 프로그래밍 환경과 함께 제공되기 때문에 따로 설치하지 않고 그대로 사용했습니다.

환경 변수 설정:
내 컴퓨터 -> 속성:

추가로:

환경 변수:

먼저 MinGW 컴파일러의 bin 폴더 경로를 추가합니다(E:\Program Files\CodeBlocks\MinGW\bin이 있습니다).
"경로" 변수를 선택하고 "편집" 버튼을 클릭해야 합니다.

주목!우리는 이미 존재하는 것을 대체해서는 안 됩니다. 추가하다, 그렇지 않으면 컴퓨터의 무언가가 정상적으로 작동하지 않을 수 있습니다. 창이 나타납니다.
"변수 값"이라는 입력 필드의 줄 끝으로 이동합니다. 끝에 ";"가 없으면 (따옴표 제외), 세미콜론을 입력하고 MinGW "bin" 폴더의 경로를 붙여넣습니다.
나는 이것을 가지고 있다(나는 이미 다른 폴더에 대한 경로가 있다는 것을 줄임표로 보여주었다)...; E:\Program Files\CodeBlocks\MinGW\bin;
즉, "Path"의 경로는 세미콜론으로 구분됩니다. 확인을 누릅니다.
다음 변수를 만듭니다.

변수 이름: MinGWDIR 변수 값: MinGW 폴더 경로(E:\Program Files\CodeBlocks\MinGW 있음)
변수명: QMAKESPEC 변수값: win32-g++
변수 이름: QTDIR 변수 값: 압축을 푼 qt 소스의 경로(E:\Qt\qt-everywhere-opensource-src-4.8.5가 있습니다)

QMAKESPEC에는 빌드 프로필의 이름이 포함되어야 합니다. 선택한 MinGW 컴파일러의 경우 Qt에는 두 가지 프로필이 있습니다. "win32-g++" - 버전용 컴파일러 GCC 4.6 이하 및 GCC 4.6 컴파일러 버전의 경우 "win32-g++-4.6"(최신 버전의 MinGW에서 사용됨).

Qt 라이브러리 구성. 명령줄을 실행하고 Qt 소스가 있는 폴더로 이동합니다(E:\Qt\qt-everywhere-opensource-src-4.8.5 있음). 옵션과 함께 구성기를 실행해야 합니다. 저는 LGPL 버전을 사용하고 있으므로 -opensource 옵션을 선택했습니다. 또한 데모 및 예제 -nomake 데모 -nomake 예제가 필요하지 않습니다. 디버그 및 릴리스 버전이 필요합니다. 일반적으로 다음을 입력했습니다(수동으로 더 나은 방법, 그렇지 않으면 붙여넣을 때 모든 옵션이 시작되지 않고 첫 번째 줄에 맞는 옵션으로 시작될 수 있음).

configure.exe - 디버그 및 릴리스 -qt-libpng -qt-libjpeg -오픈 소스
-no-qt3support -qt-zlib -qt-libmng -qt-libtiff
-nomake 데모 -nomake 예제


구성자는 4가지 옵션을 제공하면서 묻습니다. LGPL 사용에 동의해야 합니다(불행히도 이름은 기억나지 않지만 분명히 있습니다).
그 후 구성자는 Qt 라이브러리 모듈의 qmake.exe 키 파일과 makefile을 생성합니다. 이 프로세스가 완료되면 다음 메시지가 나타납니다.

이제 Qt가 빌드를 위해 구성되었습니다. mingw32-make를 실행하면 됩니다.
재구성하려면 mingw32-make confclean 및 configure를 실행하십시오.

컴파일을 실행해야 합니다. 이렇게 하려면 명령줄에 다음을 입력합니다.

qt를 컴파일하는 데 시간이 매우 오래 걸립니다. 이 과정은 10시간이 걸렸다. 나는 11시에 시작했다. 나는 18시 20분에 마지막으로 컴퓨터를 들여다보았다 - 그 과정은 여전히 ​​진행 중이었다. 컴퓨터가 마우스와 키보드 클릭에 응답하지 않았기 때문에 아침에 컴퓨터를 다시 시작해야 했습니다. 검색을 통해 가장 최근에 생성된 라이브러리 파일이 21.02.02에 생성되었음을 알 수 있었습니다.
컴파일 된 Qt 라이브러리를 확인하기로 결정한 후. 에 등록됨 환경 변수 Qt의 "bin" 폴더 경로(E:\Qt\qt-everywhere-opensource-src-4.8.5\bin 있음). 이것은 qmake를 실행하는 데 필요합니다.
그래서 저는 CodeBlocks에서 생성된 기본 창으로 샘플 Qt 응용 프로그램을 테스트하고 있습니다.
커맨드 라인에서 메인 윈도우가 있는 프로젝트 폴더로 변경했습니다. 나빌

Qt는 .pro 확장자를 가진 프로젝트 파일을 만들었습니다. 매개변수 없이 간단히 추가로 채워집니다. Qt는 프로젝트의 "makefile"을 만들었습니다. 프로젝트를 컴파일해야 합니다. 이를 위해 명령줄에 입력했습니다.
모두. Debug 폴더에서 나는 오랫동안 기다려온 실행 파일을 보았습니다. 그 이름은 Qt와 신경이 쓰이기 때문에 오랫동안 생각하지 않았습니다.

보여 주다

Windows 7의 경우 녹색 화살표 위의 Qt Creator 화면 왼쪽 하단 모서리에 있는 컴퓨터 아이콘 옆에 있는 화살표 아이콘을 클릭한 다음 목록에서 컴파일러를 두 번 클릭하고 프로젝트를 다시 빌드하여 이 문제를 해결했습니다.

2018-12-04T00:00Z

~/Qt/ 폴더에 Qt를 설치한 다음 수동으로 폴더 이름을 다른 것으로 변경했을 때 비슷한 문제가 있었습니다. 폴더 이름을 다음으로 복원했을 때 소스 파일~/Qt/(Qt 설치 프로그램에 지정됨), 문제가 사라졌습니다. 모든 것이 결정되었습니다.

2018-12-11T00:00Z

Mac에서 개발하는 동안 비슷한 문제가 발생했습니다.

OSX 10.9에서 QT 5.4.0(Clang 6.0(Apple)) 기반의 QT 3.3.0 Creator로 데스크탑 개발을 하려고 했습니다. GCC, G++ 및 CLANG을 사용하도록 키트를 수동으로 변경하려고 시도한 후. 마침내이 매우 간단한 솔루션을 찾았습니다.

xxx.pro.user 파일을 삭제하고 QT Creator를 다시 시작합니다. 그런 다음 컴파일러/환경을 자동으로 선택합니다.

2018-12-18T00:00Z

* Windows 사용자만 해당 *

다음 단계로 이동하기 전에 다음 항목이 있는지 확인하십시오. 최신 버전 Qt.

  1. 다음 링크에서 minGW-64비트를 다운로드하여 설치합니다.
  2. minGW를 설치한 디렉토리를 기억하십시오.
  3. Qt Creator를 열고 도구 -> 옵션 -> 빌드 및 실행으로 이동합니다.
  4. 컴파일러 탭에서 추가 -> MinGW ->를 선택합니다.
    이름: MinGW
    경로: 보기 mingw-w64.bat(이 파일은 MinGW를 설치한 디렉토리에서 찾을 수 있습니다).
    ABI: x86 Windows msvc2015 pe 64비트

    변경 사항을 적용하는 것을 잊지 마십시오.

    키트로 이동 -> 추가
    이름: GCC
    장치 유형: 데스크탑
    장치: 로컬 PC(데스크톱의 경우 기본값)
    컴파일러: minGW
    Qt 버전: 선택 최신 버전

    변경 사항을 적용하고 qt를 다시 시작하십시오.

새 프로젝트를 만들 때 GCC를 번들로 사용하고 있는지 확인하십시오.

그래도 안되면 왼쪽 하단의 플레이버튼 -> GCC -> 빌드를 눌러주세요.

또는

프로젝트로 이동(왼쪽 메뉴에 있음) -> 빌드 단계 -> 만들기 -> minGw31-make.exe 파일 재정의 -> minGW/bin\mingw32-make.exe를 설치한 경로로 이동합니다.
깨끗한 단계에도 동일하게 수행하십시오.

이 단계를 수행한 후에도 여전히 오류가 발생하면 설치를 시도하십시오. 환경 변수

  1. 승리 + Q를 누르십시오
  2. "환경 변수"를 입력하십시오.
  3. "시스템 환경 변수 편집"을 클릭하십시오.
  4. 시스템 속성 -> 고급 -> 환경 변수
  5. 경로( 노트. 이 단계를 매우 신중하게 사용하고 다른 옵션을 혼동하지 마십시오.)
  6. 수정 클릭
  7. 텍스트의 끝으로 이동하려면 오른쪽 화살표를 누르십시오.
  8. 세미콜론을 입력하십시오(모든 시스템 경로가 세미콜론으로 구분되기 때문에 끝에 있는 경우 제외)
  9. 붙여넣기 경로 "MinGW_installation_directory\bin"(제 경우에는 "G:\Qt\Tools\mingw32\bin"이었습니다). 올바른 경로를 복사하여 붙여넣었는지 확인하십시오.
  10. 확인을 클릭하고 변경 사항을 적용합니다.

그것은 그것을해야합니다!!!

Qt Creator 구성

탭에서 빌드 및 실행 > 일반프로젝트 디렉토리를 지정하십시오(예: /home/login/Qt/qt-proj)(이 디렉토리는 미리 작성해야 함). 탭에서 텍스트 편집기 > 동작정하다 파일 인코딩 > 기본값 UTF-8 값.

도구 설정

Qt 5 .

탭 선택 빌드 및 실행 > 컴파일러

이름: /usr/bin/gdb의 GDB 시스템
길: /usr/bin/gdb
유형: gdb
아비: x86-linux-generic-elf-unknown
버전: 7.7.1

/home/login/Qt/Qt5/5.5/gcc/bin/qmake. 프로필 이름에서 예를 들어 Qt 5.5.1 GCC 32bit 를 규정합니다.

탭에서 빌드 및 실행 > 일반프로젝트 디렉토리를 지정합니다(예: C:\Qt\qt-proj)(이 디렉토리는 미리 생성해야 함). 탭에서 텍스트 편집기 > 동작정하다 파일 인코딩 > 기본값값 windows-1251 / CP1251 .

도구 설정

MinGW와 함께 Qt 5 라이브러리를 이미 설치하고 GDB 디버거를 구축했다고 가정합니다.

탭 선택 빌드 및 실행 > 컴파일러, 추가 > MinGW 버튼을 누르고 컴파일러 경로를 지정합니다. C:\Qt\Qt5.5.1\Tools\mingw492_32\bin\g++.exe. 예를 들어 MinGW 4.9.2 (x86 32bit) 와 같이 이름을 지정합니다.

디버거 탭(여기)에서 추가 버튼을 클릭하고 새 디버거의 속성에서 다음을 지정합니다.

이름: GDB 7.10
길: C:\Qt\qtcreator-gdb-7.10\gdb-i686-pc-mingw32.exe

그런 다음 Qt 버전 탭을 선택하고 추가 ... 버튼을 클릭한 다음 사전 설치된 Qt 라이브러리의 경로를 지정하십시오. C:\Qt\Qt5.5.1\5.5\mingw492_32\bin\qmake.exe. 프로필 이름에 예를 들어 Qt 5.5.1 MinGW 4.9.2 라고 씁니다.
이제 여러 도구를 만들 수 있습니다. 키트 탭을 선택하고 추가 버튼을 클릭하고 새 번들의 속성에서 지정

Qt 5 및 MSVC 2010

MSVC 2010 및 Windows 7용 Windows SDK가 설치된 Qt 5 라이브러리가 이미 있다고 가정합니다.

탭 선택 빌드 및 실행 > 컴파일러발견된 것들 중에 속성이 있는 컴파일러가 있는지 확인하십시오.

디버거 탭(여기)에서 감지된 항목 중 디버거가 있는지 확인합니다.

그런 다음 Qt 버전 탭을 선택하고 추가 ... 버튼을 클릭한 다음 사전 설치된 Qt 라이브러리의 경로를 지정하십시오. D:\Qt\Qt5.5.1-vs\5.5\msvc2010\bin\qmake.exe. 프로필 이름에서 예를 들어 Qt 5.5.1 MSVC 2010을 규정합니다.
이제 여러 도구를 만들 수 있습니다. 키트 탭을 선택하고 추가 버튼을 클릭하고 새 번들의 속성에서 지정

확인 버튼을 눌러 옵션 창을 닫습니다.