환경 설정
기존에는 QT 설치 경로를 CMAKE_PREFIX_PATH에 설정한 뒤, find_pacakge를 사용했지만 QT6_ROOT라는 변수를 지정하는 방법도 가능하다고 한다,
이를 살펴보면, find_package() 커맨드는 CMAKE_PREFIX_PATH도 참고하지만, <PackageName>_ROOT CMake 변수에 지정된 prefix도 검색한다. CMake 3.27 버전부터 추가됐다고 한다.
- 크로스 컴파일하거나 vanila cmake를 사용할 때는 QT6_ROOT 또는 CMAKE_PREFIX_PATH 같은 검색 경로 대신 CMAKE_TOOLCHAIN_FILE을 설정
QT 소스 importing
모던 CMake에서는 FetchContent와 같은 다른 종속성 제공자를 지원하지만, QT에서 FetchContent를 같이 사용하는 것은 지원되지 않는다. 이는 QT 기능이 CMake 자체에 타이트하게 통합되어 있기 때문이다. QT 소스를 통해 add_subdirectory와 Git submodule을 통한 QT 소스 추가도 지원되지 않는다고 한다.
add_subdirectory() 커맨드 기능자체는 사용가능하지만, `add_subdirectory(qtbase)` 이런 방식은 가능하지 않다. 내가 만든 모듈이나 타겟을 추가하는 것은 문제가 없다.
또한 모든 하위 디렉토리에서 QT를 사용하는 경우 최상단 CMakeLists.txt에서 한 번만 호출하면 된다, qt소스를 불러올때는 find_package() 커맨드만 사용가능함에 유의하자.
컴파일러 버전
QT6는 C++버전 17이상을 지원하는 컴파일러가 필요하다.
모듈 변수들
https://doc.qt.io/qt-6/cmake-variable-reference.html#module-variables
find_package로 로드된 qt 모듈은 다양한 변수를 설정한다. 예를 들어 Widgets을 제대로 불러왔다면 다음 변수들을 사용 가능하다.
qt에서 지원하는 추가 커맨드
qt_standard_project_setup()
해당 명령은 일반적인 QT 어플리케이션의 프로젝트 전체 기본값을 설정한다.
이 명령은 무엇보다 CMAKE_AUTOMOC 변수를 ON으로 설정한다. 이 변수는 CMake가 필요 시 QT의 메타 객체 컴파일러(MOC)가 투명하게 호출되도록 규칙을 자동으로 설정한다.
요약
- CMAKE_AUTOMOC, CMAKE_AUTOUIC true로 설정
- 그 외 필요한 디렉토리 경로 설정
qt_add_executable()
- add_executable에 대한 QT의 래퍼.
- 자동으로 정적 QT Build의 QT 플러그인을 링킹,
- 플랫폼별 라이브러리 이름 사용자 지정 등의 작업을 자동으로 추가하는 로직 제공
- 보통 여기에 .h 파일을 나열하진 않는다고 한다.
- qmake는 헤더 파일을 명시적으로 나열하여 MOC에서 처리되도록 해야한다고 한다.
- 모던 CMake부터는 .h 파일을 명시하는 것은 권장하지 않는데, 이것을 따르는것처럼 보인다.
참고 자료
'QT' 카테고리의 다른 글
[QT] QOpenGLShaderProgram의 addShaderFromSourceCode 메서드 (0) | 2025.05.18 |
---|---|
[QT] QApplication (0) | 2025.05.02 |
[QT6] windeployqt를 통한 환경 exe 파일 구동 설정 (0) | 2025.04.17 |