Migrate build system to CMake for cross-platform support

This commit is contained in:
2026-06-10 13:14:34 +02:00
parent 5475fc301d
commit a2d3eda4e9
3 changed files with 104 additions and 0 deletions
+82
View File
@@ -0,0 +1,82 @@
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()
+9
View File
@@ -0,0 +1,9 @@
@echo off
:: Build script for Windows
set BUILD_DIR=build
if not exist %BUILD_DIR% mkdir %BUILD_DIR%
cd %BUILD_DIR%
cmake ..
cmake --build . --config Release
cd ..
echo Build complete. Binary located in %BUILD_DIR%\Release\BudgetPro.exe
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
# Build script for Linux and macOS
BUILD_DIR="build"
if [ ! -d "$BUILD_DIR" ]; then
mkdir $BUILD_DIR
fi
cd $BUILD_DIR
cmake ..
make -j$(nproc)
cd ..
echo "Build complete. Binary located in $BUILD_DIR/BudgetPro"