Qt 6의 빌드 시스템 변경 사항
Qt 6에 들어간 많은 작업은 Qt와 그 모듈을 빌드하는 방법과 관련이 있습니다. 목표는 널리 채택된 대중적인 빌드 도구로 전환하여 Qt를 미래에 대비하는 것이었습니다: CMake.
소스에서 Qt 빌드하기
Qt 5 빌드 시스템은 qmake를 기반으로 구축되었습니다. Qt 6에서는 빌드 시스템을 CMake로 포팅했습니다.
참고: 이는 소스에서 Qt를 빌드하려는 사용자에게만 영향을 줍니다. 여전히 응용 프로그램의 빌드 도구로 qmake를 사용할 수 있습니다.
cmake를 호출하여 명령줄에서 직접 Qt를 구성할 수 있습니다. 그러나 더 나은 인터페이스와 추가적인 오류 확인 기능을 제공하는 configure 명령줄 도구를 계속 권장합니다.
새로운 구성 API에 대한 개요는 Qt 구성 옵션도 참조하세요.
CMake, 외부 종속성으로서의 Ninja
Qt를 구성하고 빌드하려면 최신 버전의 CMake가 필요합니다. Qt 6.0의 경우 CMake 3.16이 필요합니다. Qt 6.2부터는 Qt를 정적 라이브러리로 빌드할 때 CMake 3.21이 필요합니다. Qt 6.6부터는 Apple 플랫폼용 Qt를 빌드할 때 CMake 3.21.1이 필요합니다. 또한 최신 버전의 Ninja 도구가 설치되어 있어야 합니다.
CMake와 Ninja는 모두 다양한 방법으로 설치할 수 있는 오픈 소스 툴입니다. Qt Online Installer 에서도 사용할 수 있습니다.
다양한 플랫폼의 빌드 요구 사항에 대한 자세한 개요는 Qt 소스 빌드하기를 참조하세요.
Qt 라이선스 선택하기
Qt 5에서는 구성에서 상용 라이선스 또는 오픈 소스 라이선스 중 어떤 라이선스를 사용할지 선택해야 합니다. 상용 라이선스가 여러 개 있는 경우 사용하려는 라이선스도 선택해야 했습니다.
Qt 6에서는 이 두 가지 선택 항목을 모두 제거했습니다. 사용 가능한 라이선스 선택은 아티팩트가 아니라 Qt 회사와 맺은 법적 계약에 따라 달라집니다.
구성 옵션 -opensource, -commercial 및 -confirm-license는 Qt 6에서 무시되며, 향후 버전의 Qt에서 제거될 수 있습니다.
구성 다시 실행하기
다른 구성 옵션을 테스트하기 위해 config를 다시 실행하고 싶을 때가 있습니다. Qt 5에서 구성은 실행 사이에 환경의 다양한 정보를 캐시했지만, 그렇지 않은 경우 깨끗한 상태에서 시작했습니다: 이전 실행의 인수를 재사용하려면 -redo를 사용하거나 config.status 셸 스크립트를 사용해야 했습니다. 또한 -recheck, -recheck-all 옵션을 사용하여 캐시된 테스트를 강제로 재평가할 수도 있습니다.
CMake와 Qt 6에서 구성하면 훨씬 더 적극적으로 결과를 캐시합니다. 감지된 환경 설정뿐만 아니라 다른 명령줄 인수를 통해 수행된 선택 사항도 CMakeCache.txt라는 파일에 저장됩니다. 새 옵션으로 구성을 실행하면 새 옵션이 이 파일에 병합됩니다. 처음부터 시작하려면 파일을 삭제합니다. 위의 구성 옵션은 더 이상 지원되지 않습니다.
Qt의 일부만 빌드하기
Qt 5의 빌드 시스템에서는 하위 디렉터리에서 빌드 도구(예: make
)를 실행하여 부분적으로 다시 빌드할 수 있었습니다.
CMake는 다른 패러다임을 따르며 전체 빌드를 고려하여 최상위 디렉토리에서 타깃을 빌드해야 합니다. 빌드에서 사용 가능한 모든 타깃을 보려면 ninja -t targets를 사용하세요.
타사 라이브러리 확인
구성 작업 중 하나는 환경에서 다양한 타사 패키지의 가용성을 감지하는 것입니다. Qt 5에서는 이 작업을 위해 선택적으로 pkg-config를 사용했지만 다양한 컴파일 타임 테스트도 사용했습니다. 이러한 검사는 명령줄에서 ICU_PREFIX, ICU_LIBS 등과 같은 다양한 할당을 사용하여 조정할 수 있습니다.
Qt 6에서 구성은 종속성을 해결하기 위해 CMake에 의존합니다. 대부분의 종속성을 해결하려면 서드파티 라이브러리가 CMake 검색 경로에 CMake 패키지를 제공해야 합니다. CMAKE_PREFIX_PATH
변수를 사용하여 사용자 지정 위치로 이 경로를 확장할 수 있습니다.
OpenSSL과 같은 일부 종속성은 CMake 내의 로직에 의해 감지되기도 합니다. OpenSSL이 선택되지 않는 경우 OPENSSL_ROOT_DIR
CMake 변수가 설치 디렉터리를 가리키도록 설정해야 할 수 있습니다.
툴체인 선택
Qt 5에서는 빌드 및 대상 플랫폼을 모두 지정하기 위해 소위 mkspec을 사용하여 구성합니다(-platform, -xplatform 및 -device 옵션). CMake는 이러한 옵션을 사용하지 않고 대신 환경 검사 및 도구 체인 파일에 의존합니다( CMake-toolchains 문서 참조). 플랫폼, -x플랫폼 옵션은 여전히 사용할 수 있지만 생성된 qmake 도구의 기본값을 설정하는 데만 사용됩니다.
Qt 교차 컴파일
교차 컴파일은 한 컴퓨터 시스템(대상)의 코드를 다른 시스템(호스트)에서 컴파일하는 행위입니다. Qt 애플리케이션을 교차 컴파일하기 위한 빌드 환경은 호스트에서 Qt 도구를 사용할 수 있어야 하며(예: moc, rcc), 타깃을 위해 Qt 라이브러리를 빌드할 수 있어야 합니다.
Qt 5에서는 구성 기능을 통해 호스트 툴과 타겟 툴 및 라이브러리를 한 번에 빌드할 수 있었습니다. Qt 6에서는 이 기능이 더 이상 지원되지 않습니다. 대신 호스트에 Qt가 설치되어 실행 중이어야 타겟에 Qt를 크로스 컴파일할 수 있습니다. 또한 설치된 Qt는 교차 컴파일하려는 버전과 동일한 버전이어야 합니다.
크로스 컴파일에 대한 자세한 내용은 임베디드 Linux 디바이스 구성하기, 안드로이드용 Qt - 소스에서 빌드하기 및 iOS용 Qt - 소스에서 빌드하기를 참조하십시오.
Qt 플러그인 및 추가 라이브러리 포팅하기
Qt 애플리케이션 빌드에는 여전히 qmake가 지원되지만, 사용자 정의 Qt 플러그인이나 Qt 5 빌드 시스템의 내부에 의존하는 라이브러리를 컴파일하는 데는 더 이상 사용할 수 없습니다. 이러한 라이브러리나 플러그인은 Qt 6에서 사용하려면 CMake로 포팅해야 합니다.
Qt 6.0 출시 시점에 사용자 지정 Qt 플러그인 또는 라이브러리를 빌드하기 위한 API는 아직 기술 프리뷰 단계이므로 향후 버전에서 변경될 수 있습니다. 공개 안정 API는 추후 Qt 6 릴리스에서 제공될 예정입니다.
관련 주제
- Qt6의 Qt 모듈 변경 사항 - Qt 모듈의 API 변경 사항 목록
- 지원되는 모듈의 변경 사항 - Qt 6.0의 Qt 5 모듈 상태
- Qt 5와 Qt 6 호환성 - Qt 5와 Qt 6 모두로 애플리케이션 빌드하기
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.