Qt_CMake_Project_Template/sources/CMakeLists.txt

109 lines
4.1 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#
# Пример файла проекта CMake для приложения Windows/Linux
# Подходит для Qt5 (x32, x64) и Qt6 (x64) minGW, gcc
#
# Всё собирается в подкаталог _distrib и готово к запуску
# ================================================================================
cmake_minimum_required(VERSION 4.0)
# Название приложения, версия и краткое описание.
# Внимание!!! Название проекта пишите только здесь, в остальных местах
# используйте переменную ${PROJECT_NAME}
project(ExampleApp
VERSION 1.0
DESCRIPTION "Example CMake Project"
LANGUAGES CXX
)
# Подверсия до выпуска финальной. Можно потом закомментировать:
set(PROJECT_VERSION_TWEAK "-pre-alpha")
# Настройки проекта подключаются тут.
# Там настраивается большинство параметров, каталоги версия и т.д.:
include(${CMAKE_CURRENT_SOURCE_DIR}/../_cmake/app_settings.cmake)
# Ищем нужные библиотеки Qt (перечислить в списке):
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS
Core Widgets SerialPort
)
# Исходники должны быть в переменной PROJECT_SOURCES
# эти файлы используются для формирования переводов, если включено (ниже будет)
set(PROJECT_SOURCES
main.cpp
main_window.cpp
main_window.h
main_window.ui
logger.cpp
logger.h
)
# Встраиваемые ресурсы для проекта (добавить свои в конец списка):
set(PROJECT_RESOURCES
${RESOURCES_DIR}/main.qrc
)
# Для винды подключаем ресурсные файлы с версией и иконкой:
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(PROJECT_RC_FILES
${RESOURCES_DIR}/main_icon.rc
${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc
)
endif()
# Всё это дело указываем для сборки под нужную версию Qt:
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(${PROJECT_NAME}
MANUAL_FINALIZATION
${PROJECT_SOURCES}
${PROJECT_RESOURCES}
${PROJECT_RC_FILES}
)
else()
add_executable(${PROJECT_NAME}
${PROJECT_SOURCES}
${PROJECT_RESOURCES}
${PROJECT_RC_FILES}
)
endif()
# Если нужно формировать файлы переводов:
include(${CMAKE_INC_DIR}/update_translations.cmake)
# Опции компиляции. Лучше всегда включать во все проекты на старте:
include(${CMAKE_INC_DIR}/target_options.cmake)
# Линкуем нужные библиотеки к нашему приложению (добавить нужные в конец списка):
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::SerialPort
)
# Каталоги поиска заголовочных файлов (добавить нужные в конец списка):
target_include_directories(${PROJECT_NAME} PRIVATE
${SYSTEM_INCLUDE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${COMMON_SOURCES_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/private
)
# Для винды надо сказать, что это запускаемое приложение:
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set_target_properties(${PROJECT_NAME} PROPERTIES
WIN32_EXECUTABLE TRUE
)
endif()
# Это для Qt6 нужно при сборке:
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(${PROJECT_NAME})
endif()
# Дополнительные действия после сборки.
# Там копируются зависимые библиотеки в наш каталог, чтоб всё запускалдось на другом компе:
include(${CMAKE_INC_DIR}/post_build.cmake)