83 lines
1.9 KiB
CMake
83 lines
1.9 KiB
CMake
|
|
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()
|