cmake_minimum_required(VERSION 3.16) # Projektname und unterstützte Sprachen (C++ für Qt, C für die Treiber) project(BionxControl LANGUAGES CXX C) # ------------------------------------------------------------------------------ # 1. C++ Standard & Projekt-Einstellungen # ------------------------------------------------------------------------------ # Du hast C++23 angefordert. Hinweis: Der Compiler muss sehr aktuell sein (GCC 13+ / MSVC 2022) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Automatische Erstellung von MOC, UIC und RCC aktivieren set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) # ------------------------------------------------------------------------------ # 2. Qt-Pakete laden # ------------------------------------------------------------------------------ # Äquivalent zu: QT += core gui widgets svg find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Svg) # ------------------------------------------------------------------------------ # 3. Quellcode definieren # ------------------------------------------------------------------------------ set(PROJECT_SOURCES main.cpp bcmainwindow.cpp bc.cpp bcdelightpmwidget.cpp bcdeviceview.cpp bcdriver.cpp bcdriverstatewidget.cpp bcdrivertinycan.cpp bcthemeswitchbutton.cpp bctoggleswitch.cpp bctransmitter.cpp bcvalue.cpp bcvaluedelegate.cpp bcvaluemodel.cpp bcvalueslider.cpp bcvaluesliderstyle.cpp bcxmlloader.cpp # Deine Header (wichtig, damit sie in der IDE sichtbar sind) bcmainwindow.h bc.h bcdelightpmwidget.h bcdeviceview.h bcdriver.h bcdriverstatewidget.h bcdrivertinycan.h bcthemeswitchbutton.h bctoggleswitch.h bctransmitter.h bcvalue.h bcvaluedelegate.h bcvaluemodel.h bcvalueslider.h BCValueSliderStyle.h bcxmlloader.h # UI Forms bcmainwindow.ui bcvalueslider.ui # Resources bionxcontrol.qrc ) # ------------------------------------------------------------------------------ # 4. Plattform-Spezifika (Architektur-Entscheidung) # ------------------------------------------------------------------------------ # Windows-Spezifische Quellen und Libs if(WIN32) message(STATUS "Konfiguration für Windows.") list(APPEND PROJECT_SOURCES libwin/can_drv_win.c libwin/mhs_can_drv.c ) # Falls du die Libs später aktivieren willst (wie im .pro auskommentiert): # target_link_libraries(BionxControl PRIVATE Advapi32) # target_link_directories(BionxControl PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/can_api") endif() # Linux / Raspberry Pi (ARM) Logik if(UNIX AND NOT APPLE) # Check ob wir auf ARM kompilieren (für RPi) if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm" OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") message(STATUS "Konfiguration für Raspberry Pi (ARM) erkannt.") # Optimierungs-Flag aus deiner .pro add_compile_options(-O3) # Falls du wiringPi oder can Treiber brauchst: # target_link_libraries(BionxControl PRIVATE wiringPi mhstcan) endif() # Hinweis: Im original .pro waren die .c Files auch unter Linux aktiv. # Falls die C-Treiber auch unter Linux laufen sollen, verschiebe sie # aus dem if(WIN32) Block nach oben in PROJECT_SOURCES. endif() # ------------------------------------------------------------------------------ # 5. Executable erstellen # ------------------------------------------------------------------------------ qt_add_executable(BionxControl MANUAL_FINALIZATION ${PROJECT_SOURCES} ) # Include-Pfade (Äquivalent zu INCLUDEPATH += . libwin) target_include_directories(BionxControl PRIVATE . libwin ) # ------------------------------------------------------------------------------ # 6. Bibliotheken linken # ------------------------------------------------------------------------------ target_link_libraries(BionxControl PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Svg ) # ------------------------------------------------------------------------------ # 7. Deployment / Installation # ------------------------------------------------------------------------------ # Äquivalent zu deinem "target.path" Block install(TARGETS BionxControl BUNDLE DESTINATION . RUNTIME DESTINATION bin ) # Unter Windows: Konsolenfenster unterdrücken (außer im Debug-Mode wenn gewünscht) if(WIN32) set_target_properties(BionxControl PROPERTIES WIN32_EXECUTABLE ON) endif()