109 lines
4.1 KiB
CMake
109 lines
4.1 KiB
CMake
#
|
||
# Пример файла проекта 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)
|
||
|
||
|