Начало работы с CMake
Начните с find_package, чтобы найти библиотеки и заголовочные файлы, поставляемые с Qt. Затем вы можете использовать эти библиотеки и заголовочные файлы с командой target_link_libraries для построения библиотек и приложений на основе Qt. Эта команда автоматически добавляет соответствующие каталоги включения, определения компиляции, флаг независимого от позиции кода и ссылки на библиотеку qtmain.lib на Windows, например.
Построение исполняемого файла графического интерфейса
Для построения исполняемого файла графического интерфейса helloworld вам необходимо следующее:
cmake_minimum_required(VERSION 3.1.0)
project(helloworld)
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) Для успешного find_package, CMake должен найти установку Qt одним из следующих способов:
- Установите переменную среды
CMAKE_PREFIX_PATHв префикс установки Qt 5. Это рекомендуемый способ. - Установите значение
Qt5_DIRв кэшеCMakeв расположение файлаQt5Config.cmake.
Настройка CMAKE_AUTOMOC автоматически запускает moc при необходимости. Более подробную информацию см. в документации CMake AUTOMOC.
Импортированные целевые библиотеки
Каждый загруженный модуль Qt определяет целевую библиотеку CMake. Имена целевых библиотек начинаются с Qt5::, за которым следует имя модуля. Например: Qt5::Core, Qt5::Gui. Передайте имя целевой библиотеки команде target_link_libraries для использования соответствующей библиотеки.
Примечание: Начиная с Qt 5.15, целевые библиотеки CMake также доступны как Qt::Core, Qt::Gui и так далее. Это упрощает написание кода CMake, который может работать как с Qt 5, так и с Qt 6.
Импортированные целевые библиотеки создаются с теми же конфигурациями, что и при настройке Qt:
- Если Qt был настроен с переключателем
-debug, создается импортированная целевая библиотека с конфигурацией DEBUG. - Если Qt был настроен с переключателем
-release, создается импортированная целевая библиотека с конфигурацией RELEASE. - Если Qt был настроен с переключателем
-debug-and-release, импортированные целевые библиотеки создаются с конфигурациями RELEASE и DEBUG.
Если в вашем проекте есть пользовательские конфигурации построения CMake, вам необходимо сопоставить вашу пользовательскую конфигурацию с конфигурацией Qt debug или release.
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")
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/cmake-get-started.html