Migrate build system to CMake for cross-platform support
This commit is contained in:
@@ -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()
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user