cmake_minimum_required(VERSION 3.16) project(BudgetPro VERSION 1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Qt 6 Configuration find_package(Qt6 REQUIRED COMPONENTS Widgets Sql) # Define directories for easier management set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(SRC_DIR ${SOURCE_DIR}/src) set(GUI_DIR ${SOURCE_DIR}/src/gui) set(WIDGET_DIR ${SOURCE_DIR}/src/gui/widgets) set(FORMS_DIR ${SOURCE_DIR}/src/gui/forms) set(MODELS_DIR ${SOURCE_DIR}/src/models) set(DAO_DIR ${SOURCE_DIR}/src/dao) set(UTILS_DIR ${SOURCE_DIR}/src/utils) set(APP_DIR ${SOURCE_DIR}/src/app) set(ROOT_WIDGET_DIR ${SOURCE_DIR}/widget) # Include Paths include_directories( ${GUI_DIR} ${WIDGET_DIR} ${FORMS_DIR} ${MODELS_DIR} ${DAO_DIR} ${UTILS_DIR} ${APP_DIR} ${ROOT_WIDGET_DIR} ${SOURCE_DIR}/data ${SOURCE_DIR}/gui/SARibbon ${SOURCE_DIR}/gui/qtRibbonGUI ) # SARibbon Library Integration # Assuming SARibbon is integrated as a sub-project or pre-compiled add_subdirectory(gui/SARibbon) # Collect Sources file(GLOB_RECURSIVE SOURCES "src/*.cpp" "src/*.h" "widget/*.cpp" "widget/*.h" "utils/*.cpp" "utils/*.h" ) # Collect Forms file(GLOB_RECURSIVE FORMS "src/gui/*.ui" "src/gui/forms/*.ui" "widget/*.ui" ) # Collect Resources file(GLOB_RECURSIVE RESOURCES "resources/*.qss" "resources/*.svg" "resources/*.png" "*.qrc" ) # Create Executable add_executable(BudgetPro ${SOURCES} ${FORMS} ${RESOURCES} ) # Link Libraries target_link_libraries(BudgetPro PRIVATE Qt6::Widgets Qt6::Sql SARibbonBar) # OS Specific configurations if(WIN32) set_target_properties(BudgetPro PROPERTIES WIN32_EXECUTABLE TRUE) target_compile_definitions(BudgetPro PRIVATE NOMINMAX) elseif(APPLE) set_target_properties(BudgetPro PROPERTIES MACOSX_BUNDLE TRUE) endif()