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