Mercurial > public > ostc_companion
diff CmakeLists.txt @ 1:0b3630a29ad8
Initial version based on previous repository.
Project was ported to QT6 and in now cmake based.
| author | Ideenmodellierer <tiefenrauscher@web.de> |
|---|---|
| date | Thu, 27 Nov 2025 18:40:28 +0100 |
| parents | |
| children | e30f00f760d3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CmakeLists.txt Thu Nov 27 18:40:28 2025 +0100 @@ -0,0 +1,234 @@ +cmake_minimum_required(VERSION 3.21) + +project(OSTCCompanion VERSION 1.0 LANGUAGES CXX) + +project(OSTCCompanion LANGUAGES CXX) + +# ---------------------------------------- +# C++ Standard +# ---------------------------------------- +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +# ---------------------------------------- +# Qt6 Modules +# ---------------------------------------- +find_package(Qt6 REQUIRED COMPONENTS + Core + Gui + Widgets + Network + Svg + Xml + SerialPort + LinguistTools +) + + +# ---------------------------------------- +# Sources, Header, UI and Ressources +# ---------------------------------------- +set(SOURCES + main.cpp + AES/rijndael.cpp + editlogdialog.cpp + Utils/Exception.cpp + Utils/Log.cpp + Utils/LogAppender.cpp + Utils/LogConsole.cpp + Utils/LogFile.cpp + Utils/ProgressEvent.cpp + MainWindow.cpp + Serial.cpp + HexFile.cpp + SettingsDialog.cpp + HardwareOperations.cpp + OSTCFrogOperations.cpp + OSTCSportOperations.cpp + OSTC2cOperations.cpp + OSTC2Operations.cpp + OSTC3Operations.cpp + OSTC3pOperations.cpp + OSTC4Operations.cpp + OSTC_CR_Operations.cpp +) + +set(HEADERS + AES/rijndael.h + AES/Adler16.h + Utils/Exception.h + Utils/Log.h + Utils/LogAppender.h + Utils/LogConsole.h + Utils/LogFile.h + Utils/ProgressEvent.h + MainWindow.h + Serial.h + HexFile.h + SettingsDialog.h + HardwareOperations.h + OSTCFrogOperations.h + OSTCSportOperations.h + OSTC2cOperations.h + OSTC2Operations.h + OSTC3Operations.h + OSTC3pOperations.h + OSTC4Operations.h + OSTC_CR_Operations.h + editlogdialog.h + ui_LogEditor.h +) + +set(UIS + LogEditor.ui + MainWindow.ui + Settings.ui +) + +set(RESOURCES + Resources.qrc + icon.rc +) + +set(TRANSLATIONS + Translations/companion_DE.ts + Translations/companion_FR.ts + Translations/companion_ES.ts + Translations/companion_IT.ts + Translations/companion_RU.ts +) + +set(app_icon_resource_windows "${CMAKE_CURRENT_SOURCE_DIR}/icon.rc") + +# ---------------------------------------- +# Executable erstellen +# ---------------------------------------- +qt_add_executable(${PROJECT_NAME} + ${SOURCES} + ${HEADERS} + ${UIS} + ${RESOURCES} + Utils/Export.h + ${app_icon_resource_windows} +) + +target_include_directories(${PROJECT_NAME} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} # Root + ${CMAKE_CURRENT_SOURCE_DIR}/Utils + ${CMAKE_CURRENT_SOURCE_DIR}/AES +) + +# ---------------------------------------- +# Qt Libraries verlinken +# ---------------------------------------- +target_link_libraries(${PROJECT_NAME} + PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network Qt6::Svg Qt6::Xml Qt6::SerialPort +) + +# ---------------------------------------- +# Plattform-spezifische Anpassungen +# ---------------------------------------- +if(WIN32) + target_compile_definitions(${PROJECT_NAME} PRIVATE _CRT_SECURE_NO_WARNINGS=1 BUILDING_OSTC_COMPANION) +elseif(APPLE) + target_compile_options(${PROJECT_NAME} PRIVATE -std=c++11 -Wno-inconsistent-missing-override) +elseif(UNIX) + target_compile_options(${PROJECT_NAME} PRIVATE -std=c++11) + set_target_properties(${PROJECT_NAME} PROPERTIES + BUILD_RPATH "\$ORIGIN/lib" + ) +endif() + +# ---------------------------------------- +# Debug/Release-Builds +# ---------------------------------------- +if(CMAKE_BUILD_TYPE MATCHES Debug) + target_compile_definitions(${PROJECT_NAME} PRIVATE DEBUG=1) +endif() + +# ---------------------------------------- +# Version aus Datei einlesen (optional) +# ---------------------------------------- +file(STRINGS "${CMAKE_SOURCE_DIR}/VERSION.txt" VERSION_CONTENT) +string(REGEX MATCH "MAJOR=([0-9]+)" _ ${VERSION_CONTENT}) +set(MAJOR_VERSION ${CMAKE_MATCH_1}) +string(REGEX MATCH "MINOR=([0-9]+)" _ ${VERSION_CONTENT}) +set(MINOR_VERSION ${CMAKE_MATCH_1}) +string(REGEX MATCH "PATCH=([0-9]+)" _ ${VERSION_CONTENT}) +set(PATCH_VERSION ${CMAKE_MATCH_1}) +string(REGEX MATCH "BETA=([0-9]+)" _ ${VERSION_CONTENT}) +set(BETA_VERSION ${CMAKE_MATCH_1}) + + +message("MAJOR_VERSION = '${MAJOR_VERSION}'") + +target_compile_definitions(${PROJECT_NAME} PRIVATE + MAJOR_VERSION=${MAJOR_VERSION} + MINOR_VERSION=${MINOR_VERSION} + PATCH_VERSION=${PATCH_VERSION} + BETA_VERSION=${BETA_VERSION} +) + +# Show folder in Qt Creator +file(GLOB ICON_FILES "${CMAKE_SOURCE_DIR}/Images/*") +add_custom_target(Resources ALL SOURCES ${ICON_FILES}) + + +qt6_add_translation(QM_FILES ${TRANSLATIONS}) + +if(CMAKE_BUILD_TYPE MATCHES Release) + target_compile_definitions(${PROJECT_NAME} PRIVATE DEBUG=1) + + message("Build release and installer") + + set(CPACK_IFW_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/Images/inst_OSTC_Companion.ico") + + install(FILES ${CMAKE_SOURCE_DIR}/Images/app_OSTC_Companion.ico + DESTINATION . # relativ zum Package root + COMPONENT Core) + + install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin COMPONENT Core) + + qt_generate_deploy_app_script( + TARGET ${PROJECT_NAME} + OUTPUT_SCRIPT deploy_script + NO_UNSUPPORTED_PLATFORM_ERROR + ) + + install(SCRIPT ${deploy_script} + COMPONENT Core) + + # CPack IFW Konfiguration + set(CPACK_GENERATOR "IFW") + set(CPACK_IFW_ROOT "D:/Programme/QT/Tools/QtInstallerFramework/4.10") + set(CPACK_PACKAGE_VERSION_MAJOR "3") + set(CPACK_PACKAGE_VERSION_MINOR "3") + set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") + set(CPACK_PACKAGE_VENDOR "Heinrichs Weikamp") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OSTC Companion Application") + set (CPACK_IFW_PACKAGE_NAME "${PROJECT_NAME} 3.3.1") + set (CPACK_IFW_PACKAGE_TITLE "${PROJECT_NAME} Installer") + set (CPACK_IFW_PACKAGE_PUBLISHER "Heinrichs Weikamp") + set (CPACK_IFW_PACKAGE_WIZARD_STYLE "Modern") + set (CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST OFF) + + set (CPACK_IFW_PACKAGE_START_MENU_DIRECTORY "OSTC-Tools") + + include(CPack) + include(CPackIFW) + + # Hauptkomponente + cpack_add_component(Core + DISPLAY_NAME "OSTC Companion" + DESCRIPTION "OSTC maintenance application" + REQUIRED + ) + + cpack_ifw_configure_component(Core ESSENTIAL FORCED_INSTALLATION) +endif() + + +
