開始采用
find_package
以定位 Qt 隨附的庫和 Header (頭) 文件。然後,可以使用這些庫和 Header (頭) 文件采用
target_link_libraries
命令來構建基於 Qt 的庫和應用程序。此命令自動添加適當包括目錄、編譯定義、位置無關代碼標誌並鏈接到
qtmain.lib
庫在 Windows,例如。
要構建 helloworld GUI 可執行文件,需要以下:
cmake_minimum_required(VERSION 3.1.0)
project(helloworld VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if(CMAKE_VERSION VERSION_LESS "3.7.0")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()
find_package(Qt5 COMPONENTS Widgets REQUIRED)
add_executable(helloworld
mainwindow.ui
mainwindow.cpp
main.cpp
resources.qrc
)
target_link_libraries(helloworld Qt5::Widgets)
For
find_package
要取得成功,
CMake
必須按以下方式之一找到 Qt 安裝:
CMAKE_PREFIX_PATH
環境變量為 Qt 5 安裝前綴。這是推薦方式。
Qt5_DIR
在
CMake
緩存為位置對於
Qt5Config.cmake
文件。
The
CMAKE_AUTOMOC
設置自動運行 MOC (元對象編譯器) 當要求時。更多細節,見
CMake AUTOMOC 文檔編製
.
被加載的每一 Qt 模塊定義一 CMake 庫目標。目標名稱開頭采用
Qt5::
,緊隨其後的是模塊名稱。例如:
Qt5::Core
,
Qt5::Gui
。將庫目標的名稱傳遞給
target_link_libraries
以使用各自的庫。
注意:
從 Qt 5.15 起,CMake 目標也可用作
Qt::Core
,
Qt::Gui
,等等。這簡化瞭編寫可以與 Qt 5 和 Qt 6 一起使用的 CMake 代碼的工作。
采用相同配置創建導入目標,因為當有配置 Qt 時。即:
-debug
開關,則采用 DEBUG 配置創建導入目標。
-release
開關,則采用 RELEASE 配置創建導入目標。
-debug-and-release
開關,則采用 RELEASE 和 DEBUG 配置創建導入目標。
若您的工程有自定義
CMake
構建配置,必須將自定義配置映射到 debug (調試) 或 release (發行) Qt 配置。
find_package(Qt5 COMPONENTS Core REQUIRED)
set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage")
# set up a mapping so that the Release configuration for the Qt imported target is
# used in the COVERAGE CMake configuration.
set_target_properties(Qt5::Core PROPERTIES MAP_IMPORTED_CONFIG_COVERAGE "RELEASE")