이 페이지에서

Qt 6의 빌드 시스템 변경 사항

Qt 6 개발에 투입된 많은 작업은 Qt와 그 모듈을 빌드하는 방식과 관련이 있었습니다. 목표는 널리 채택되고 인기 있는 빌드 도구 인 CMake로 전환하여 Qt가 미래에도 문제없이 작동하도록 만드는 것이었습니다.

소스 코드로부터 Qt 빌드하기

Qt 5의 빌드 시스템은 qmake를 기반으로 구축되었습니다. Qt 6에서는 이 빌드 시스템을 CMake로 이식했습니다.

참고: 이는 소스 코드로부터 Qt를 빌드하려는 사용자에게만 영향을 미칩니다. 애플리케이션 빌드 도구로는 여전히 qmake를 사용할 수 있습니다.

cmake를 호출하여 명령줄에서 직접 Qt를 구성할 수도 있습니다. 그러나 더 편리한 인터페이스와 추가적인 오류 검사 기능을 제공하는 configure 명령줄 도구를 계속 사용하는 것을 권장합니다.

새로운 configure API에 대한 개요는 Qt configure 옵션을 참조하십시오.

외부 의존성으로 사용되는 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이 필요합니다. Qt 6.9부터는 CMake 3.22가 필요합니다. Qt 6.12부터는 CMake 3.25가 필요합니다. 또한 최신 버전의 Ninja 도구가 설치되어 있어야 합니다.

CMake와 Ninja는 모두 다양한 방법으로 설치할 수 있는 오픈 소스 도구입니다. 또한 Qt Online Installer 에서 다운로드할 수 있습니다.

각 플랫폼별 빌드 요구 사항에 대한 자세한 내용은 Qt 소스 빌드 문서를 참조하십시오.

Qt 라이선스 선택

Qt 5에서는 configure 과정에서 Qt를 상용 라이선스로 사용할지 오픈 소스 라이선스로 사용할지 선택해야 했습니다. 상용 라이선스를 여러 개 보유한 경우, 사용하고자 하는 라이선스를 별도로 선택해야 했습니다.

Qt 6에서는 이 두 가지 선택 항목을 모두 제거했습니다. 사용 가능한 라이선스의 선택은 아티팩트가 아닌, The Qt Company와 체결한 법적 계약에 따라 결정됩니다.

Qt 6에서는 configure 옵션인 -opensource, -commercial 및 -confirm-license가 무시되며, 향후 Qt 버전에서는 제거될 수도 있습니다.

configure 재실행

때로는 다른 configure 옵션을 테스트하기 위해 configure를 다시 실행하고 싶을 때가 있습니다. Qt 5에서는 configure가 실행 간에 환경에서 다양한 정보를 캐시했지만, 그 외에는 깨끗한 상태에서 시작했습니다. 따라서 이전 실행의 인수를 재사용하려면 -redo를 사용하거나 config.status 셸 스크립트를 사용해야 했습니다. 또한 -recheck, -recheck-all 옵션을 사용하여 캐시된 테스트를 강제로 재평가할 수도 있었습니다.

Qt 6의 CMake, 그리고 이에 따라 configure는 결과를 훨씬 더 적극적으로 캐시합니다. 감지된 환경 설정은 물론, 다른 명령줄 인수를 통해 이루어진 선택 사항도 CMakeCache.txt라는 파일에 저장됩니다. 새로운 옵션으로 configure를 실행하면, 새로운 옵션이 이 파일에 병합됩니다. 처음부터 다시 시작하려면 이 파일을 삭제하십시오. 위의 configure 옵션은 더 이상 지원되지 않습니다.

Qt의 일부만 빌드하기

Qt 5의 빌드 시스템에서는 하위 디렉터리에서 빌드 도구(예: make)를 실행하여 부분적인 재빌드를 수행할 수 있었습니다.

CMake는 다른 패러다임을 따르며, 전체 빌드 과정을 고려하여 최상위 디렉터리에서 타깃을 빌드해야 합니다. 빌드에서 사용 가능한 모든 타깃을 확인하려면 ` ninja -t targets`를 사용하십시오.

타사 라이브러리 해결

configure의 작업 중 하나는 환경에서 다양한 타사 패키지의 사용 가능 여부를 감지하는 것입니다. Qt 5에서 configure는 이를 위해 선택적으로 pkg-config를 사용하기도 했으나, 다양한 컴파일 시간 테스트도 함께 사용했습니다. 이러한 검사는 ICU_PREFIX, ICU_LIBS 등과 같은 다양한 환경 변수 설정을 통해 명령줄에서 조정할 수 있었습니다.

Qt 6에서 configure는 의존성 해결을 위해 CMake에 의존합니다. 대부분의 의존성의 경우, 타사 라이브러리가 CMake 검색 경로 내에 CMake 패키지를 제공해야 합니다. ` CMAKE_PREFIX_PATH ` 변수를 사용하여 이 경로를 사용자 정의 위치로 확장할 수 있습니다.

OpenSSL과 같은 일부 의존성은 CMake 내부의 로직을 통해 자동으로 감지되기도 합니다. OpenSSL이 감지되지 않는 경우, OPENSSL_ROOT_DIR CMake 변수를 설정하여 설치 디렉터리를 지정해야 할 수도 있습니다.

툴체인 선택

Qt 5에서는 configure가 소위 mkspecs를 사용하여 빌드 플랫폼과 대상 플랫폼(-platform, -xplatform 및 -device 옵션)을 모두 지정했습니다. CMake는 이를 사용하지 않고 대신 환경 검사 및 툴체인 파일을 활용합니다( CMake-toolchains 문서도 참조하십시오). -platform, -xplatform 옵션은 여전히 사용할 수 있지만, 생성된 qmake 도구의 기본값을 설정하는 용도로만 사용됩니다.

Qt 크로스 컴파일

크로스 컴파일이란 한 컴퓨터 시스템(타겟)용 코드를 다른 시스템(호스트)에서 컴파일하는 작업을 말합니다. Qt 애플리케이션을 크로스 컴파일하기 위한 빌드 환경에는 호스트에 Qt 도구(예: moc, rcc)가 설치되어 있어야 할 뿐만 아니라, 타겟용으로 빌드될 Qt 라이브러리도 필요합니다.

Qt 5에서는 configure를 사용하여 대상 시스템용 도구와 라이브러리뿐만 아니라 호스트 시스템용 도구도 한 번에 빌드할 수 있었습니다. Qt 6에서는 이 기능이 더 이상 지원되지 않습니다. 대신, Qt를 대상 시스템용으로 크로스 컴파일하기 전에 호스트에 Qt가 설치되어 있고 실행 중이어야 합니다. 또한 설치된 Qt는 크로스 컴파일할 대상과 동일한 버전이어야 합니다.

크로스 컴파일에 대한 자세한 내용은 ‘임베디드 리눅스 장치 구성’, ‘Android용 Qt - 소스 코드로부터 빌드하기’, ‘iOS용 Qt - 소스 코드로부터 빌드하기’를 참조하십시오.

Qt 플러그인 및 추가 라이브러리 이식

qmake는 Qt 애플리케이션 빌드용으로 여전히 지원되지만, 사용자 정의 Qt 플러그인이나 Qt 5 빌드 시스템의 내부 기능을 사용하는 라이브러리를 컴파일하는 데는 더 이상 사용할 수 없습니다. 이러한 라이브러리나 플러그인은 Qt 6에서 사용하기 위해 CMake로 포팅해야 합니다.

Qt 6.0 출시 시점에서 사용자 정의 Qt 플러그인이나 라이브러리를 빌드하기 위한 API는 아직 기술 미리보기 단계에 있으므로, 향후 버전에서 변경될 수 있습니다. 공개된 안정 버전의 API는 향후 Qt 6 릴리스에서 제공될 예정입니다.

© 2026 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.