Spec-Zone.ru › Qt 5.14

Начало работы с CMake

Начните с find_package для поиска библиотек и заголовочных файлов, поставляемых с Qt. Затем вы можете использовать эти библиотеки и заголовочные файлы с помощью команды target_link_libraries для построения Qt-библиотек и приложений. Эта команда автоматически добавляет соответствующие каталоги включаемых файлов, определения компиляции, флаг независимости от позиции кода и ссылки на библиотеку qtmain.lib на Windows, например.

Построение исполняемого файла GUI

Для построения исполняемого файла GUI 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 одним из следующих способов:

  1. Установите переменную среды CMAKE_PREFIX_PATH в префикс установки Qt 5. Это рекомендуемый способ.
  2. Установите Qt5_DIR в кэше CMake в расположение файла Qt5Config.cmake.

Настройка CMAKE_AUTOMOC автоматически запускает moc при необходимости. Более подробную информацию см. в документации CMake AUTOMOC.

Импортированные цели

Для каждого модуля Qt создаются импортированные цели. В CMake, команды, такие как target_link_libraries, используют имена импортированных целей вместо переменных, таких как Qt5<Module>_LIBRARIES. Фактический путь к библиотеке можно получить, используя свойство LOCATION, как показано ниже:

find_package(Qt5 COMPONENTS Core REQUIRED)

get_target_property(QtCore_location Qt5::Core LOCATION)

Однако, вам редко нужен полный путь к библиотеке, так как большинство CMake API могут находить импортированные цели и использовать их автоматически вместо полного пути. Для этой цели каждый модуль в Qt 5 имеет целевую библиотеку с соглашением об именовании Qt5::<Module>.

Импортированные цели создаются с теми же конфигурациями, что и при настройке Qt. А именно:

  • Если Qt был настроен со значением переключателя -debug, создается импортированная цель с конфигурацией DEBUG.
  • Если Qt был настроен со значением переключателя -release, создается импортированная цель с конфигурацией RELEASE.
  • Если Qt был настроен со значением переключателя -debug-and-release, что является значением по умолчанию в Windows, то импортированные цели создаются с конфигурациями 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")

В CMake, плагины также доступны как IMPORTED цели. Модули Qt Network, Qt SQL, Qt GUI и Qt Widgets имеют связанные плагины. Они предоставляют список плагинов в переменной Qt5<Module>_PLUGINS.

foreach(plugin ${Qt5Network_PLUGINS})
  get_target_property(_loc ${plugin} LOCATION)
  message("Plugin ${plugin} is at location ${_loc}")
endforeach()

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/cmake-get-started.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API