Initial commit
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
# Find Google Test
|
||||
find_package(GTest REQUIRED)
|
||||
|
||||
# Find SQLite3
|
||||
find_package(SQLite3 REQUIRED)
|
||||
|
||||
# Minimum required Qt version
|
||||
find_package(Qt6 6.3 REQUIRED COMPONENTS Core Gui Sql Widgets Charts Test)
|
||||
@@ -0,0 +1,10 @@
|
||||
# Copy compile_commands.json to source directory
|
||||
if (CMAKE_EXPORT_COMPILE_COMMANDS)
|
||||
add_custom_target(
|
||||
CopyCompileCommands ALL
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_BINARY_DIR}/compile_commands.json
|
||||
${CMAKE_SOURCE_DIR}/compile_commands.json
|
||||
COMMENT "Copying compile_commands.json to source directory"
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,11 @@
|
||||
# Generate the config.h file
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/config/config.h.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/config.h
|
||||
)
|
||||
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/config/resources.qrc.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/resources.qrc
|
||||
)
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
set(ROOT_DIR ${CMAKE_SOURCE_DIR})
|
||||
|
||||
file(GLOB_RECURSE HEADER_FILES "${ROOT_DIR}/*.h")
|
||||
file(GLOB_RECURSE SOURCE_FILES "${ROOT_DIR}/*.cpp")
|
||||
file(GLOB_RECURSE CMAKE_FILES "${ROOT_DIR}/*.cmake")
|
||||
file(GLOB_RECURSE CMAKE_LISTS_FILES "${ROOT_DIR}/CMakeLists.txt")
|
||||
|
||||
set(MOC_FILTER ".*/moc_.*")
|
||||
set(BUILD_DIR_FILTER ".*/build/.*")
|
||||
|
||||
list(FILTER HEADER_FILES EXCLUDE REGEX "${MOC_FILTER}")
|
||||
list(FILTER HEADER_FILES EXCLUDE REGEX "${BUILD_DIR_FILTER}")
|
||||
|
||||
list(FILTER SOURCE_FILES EXCLUDE REGEX "${MOC_FILTER}")
|
||||
list(FILTER SOURCE_FILES EXCLUDE REGEX "${BUILD_DIR_FILTER}")
|
||||
|
||||
list(FILTER CMAKE_FILES EXCLUDE REGEX "${BUILD_DIR_FILTER}")
|
||||
list(FILTER CMAKE_LISTS_FILES EXCLUDE REGEX "${BUILD_DIR_FILTER}")
|
||||
|
||||
execute_process(COMMAND wc -l ${HEADER_FILES} OUTPUT_VARIABLE HEADER_COUNT ERROR_QUIET)
|
||||
execute_process(COMMAND wc -l ${SOURCE_FILES} OUTPUT_VARIABLE SOURCE_COUNT ERROR_QUIET)
|
||||
execute_process(COMMAND wc -l ${CMAKE_FILES} OUTPUT_VARIABLE CMAKE_COUNT ERROR_QUIET)
|
||||
execute_process(COMMAND wc -l ${CMAKE_LISTS_FILES} OUTPUT_VARIABLE CMAKE_LISTS_COUNT ERROR_QUIET)
|
||||
|
||||
file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/artifacts")
|
||||
|
||||
set(HEADER_FILE "${CMAKE_SOURCE_DIR}/artifacts/header_lines_count.txt")
|
||||
set(SOURCE_FILE "${CMAKE_SOURCE_DIR}/artifacts/source_lines_count.txt")
|
||||
set(CMAKE_FILE "${CMAKE_SOURCE_DIR}/artifacts/cmake_lines_count.txt")
|
||||
set(CMAKE_LISTS_FILE "${CMAKE_SOURCE_DIR}/artifacts/cmake_lists_lines_count.txt")
|
||||
|
||||
file(WRITE ${HEADER_FILE} "${HEADER_COUNT}")
|
||||
file(WRITE ${SOURCE_FILE} "${SOURCE_COUNT}")
|
||||
file(WRITE ${CMAKE_FILE} "${CMAKE_COUNT}")
|
||||
file(WRITE ${CMAKE_LISTS_FILE} "${CMAKE_LISTS_COUNT}")
|
||||
|
||||
message(STATUS "Header line count written to: ${HEADER_FILE}")
|
||||
message(STATUS "Source line count written to: ${SOURCE_FILE}")
|
||||
message(STATUS "CMake line count written to: ${CMAKE_FILE}")
|
||||
message(STATUS "CMakeLists.txt line count written to: ${CMAKE_LISTS_FILE}")
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# Ensure artifacts directory exists
|
||||
file(MAKE_DIRECTORY "${ARTIFACTS_DIR}")
|
||||
|
||||
# Collecting all files in the project, excluding artifacts and build directories
|
||||
file(GLOB_RECURSE PROJECT_FILES
|
||||
RELATIVE "${CMAKE_SOURCE_DIR}"
|
||||
"*"
|
||||
)
|
||||
list(FILTER PROJECT_FILES EXCLUDE REGEX "^(artifacts/|build/|external/)")
|
||||
|
||||
# Generate directory tree
|
||||
add_custom_command(
|
||||
OUTPUT "${ARTIFACTS_DIR}/tree.txt"
|
||||
COMMAND tree -I 'artifacts|build|external' "${CMAKE_SOURCE_DIR}" > "${ARTIFACTS_DIR}/tree.txt"
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
DEPENDS ${PROJECT_FILES}
|
||||
COMMENT "Generating directory tree in ${ARTIFACTS_DIR}/tree.txt"
|
||||
)
|
||||
|
||||
# Create GenerateTree target
|
||||
add_custom_target(GenerateTree ALL DEPENDS "${ARTIFACTS_DIR}/tree.txt")
|
||||
@@ -0,0 +1,2 @@
|
||||
# Generate UI files
|
||||
qt_wrap_ui(UI_HEADERS ${UI_FILES})
|
||||
@@ -0,0 +1,10 @@
|
||||
# NOTE: PRINT MESSAGES
|
||||
|
||||
# Print important message
|
||||
function(print_important_message MESSAGE_TEXT)
|
||||
message(STATUS "")
|
||||
message(STATUS "========================================")
|
||||
message(STATUS "${MESSAGE_TEXT}")
|
||||
message(STATUS "========================================")
|
||||
message(STATUS "")
|
||||
endfunction()
|
||||
@@ -0,0 +1,59 @@
|
||||
if(NOT FILES_GROUPED)
|
||||
message(FATAL_ERROR "GroupFilesByLocation.cmake must be included before CombineFileGroups.cmake")
|
||||
endif()
|
||||
|
||||
# Path to source files
|
||||
set(SOURCES
|
||||
${CONTROLLERS_SOURCES}
|
||||
${DB_SOURCES}
|
||||
${DELEGATE_SOURCES}
|
||||
${DIALOG_SOURCES}
|
||||
${MAIN_WINDOW_SOURCES}
|
||||
${MODELS_SOURCES}
|
||||
${REPOSITORIES_SOURCES}
|
||||
${SERVICES_SOURCES}
|
||||
${SQL_SOURCES}
|
||||
${SRC_SOURCES}
|
||||
${UTILS_SOURCES}
|
||||
${WIDGETS_SOURCES}
|
||||
)
|
||||
|
||||
print_important_message("Files grouped by location")
|
||||
message("CONTROLLERS_SOURCES: ${CONTROLLERS_SOURCES}")
|
||||
message("DB_SOURCES: ${DB_SOURCES}")
|
||||
message("DELEGATE_SOURCES: ${DELEGATE_SOURCES}")
|
||||
message("DIALOG_SOURCES: ${DIALOG_SOURCES}")
|
||||
message("MAIN_WINDOW_SOURCES: ${MAIN_WINDOW_SOURCES}")
|
||||
message("MODELS_SOURCES: ${MODELS_SOURCES}")
|
||||
message("REPOSITORIES_SOURCES: ${REPOSITORIES_SOURCES}")
|
||||
message("SERVICES_SOURCES: ${SERVICES_SOURCES}")
|
||||
message("SQL_SOURCES: ${SQL_SOURCES}")
|
||||
message("SRC_SOURCES: ${SRC_SOURCES}")
|
||||
message("UTILS_SOURCES: ${UTILS_SOURCES}")
|
||||
message("WIDGETS_SOURCES: ${WIDGETS_SOURCES}")
|
||||
|
||||
# WARNING: Not all header files may be included
|
||||
|
||||
# Path to header files
|
||||
set(HEADERS
|
||||
${DB_HEADERS}
|
||||
${DELEGATE_HEADERS}
|
||||
${DIALOG_HEADERS}
|
||||
${MAIN_WINDOW_HEADERS}
|
||||
${MODELS_HEADERS}
|
||||
${REPOSITORIES_HEADERS}
|
||||
${SERVICES_HEADERS}
|
||||
${SQL_HEADERS}
|
||||
${WIDGETS_HEADERS}
|
||||
)
|
||||
|
||||
# Path to UI files
|
||||
set(UI_FILES
|
||||
${DIALOG_UI_FILES}
|
||||
${MAIN_WINDOW_UI_FILES}
|
||||
${WIDGETS_UI_FILES}
|
||||
)
|
||||
|
||||
# Path to resource files
|
||||
set(RESOURCES ${RESOURCES_FILES})
|
||||
|
||||
@@ -0,0 +1,272 @@
|
||||
if(NOT PATHS_INCLUDED)
|
||||
message(FATAL_ERROR "PathsAndIncludes.cmake must be included before GroupFilesByLocation.cmake")
|
||||
endif()
|
||||
set(FILES_GROUPED TRUE)
|
||||
|
||||
# NOTE: TRANSLATIONS
|
||||
|
||||
set(TRANSLATIONS
|
||||
${TRANSLATIONS_DIR}/app_ru.ts
|
||||
)
|
||||
|
||||
# NOTE: UI/DELEGATES
|
||||
|
||||
# Delegate source files
|
||||
set(DELEGATE_SOURCES
|
||||
${UI_DELEGATES_DIR}/date_time_delegate.cpp
|
||||
)
|
||||
|
||||
# Delegate header files
|
||||
set(DELEGATE_HEADERS
|
||||
${UI_DELEGATES_DIR}/date_time_delegate.h
|
||||
)
|
||||
|
||||
# NOTE: UI/DIALOGS
|
||||
|
||||
# Dialog source files
|
||||
set(DIALOG_SOURCES
|
||||
${UI_DIALOGS_DIR}/auth_dialog.cpp
|
||||
${UI_DIALOGS_DIR}/error_dialog.cpp
|
||||
${UI_DIALOGS_DIR}/search_dialog.cpp
|
||||
)
|
||||
|
||||
# Dialog header files
|
||||
set(DIALOG_HEADERS
|
||||
${UI_DIALOGS_DIR}/auth_dialog.h
|
||||
${UI_DIALOGS_DIR}/error_dialog.h
|
||||
${UI_DIALOGS_DIR}/search_dialog.h
|
||||
)
|
||||
|
||||
# Dialog UI files
|
||||
set(DIALOG_UI_FILES
|
||||
${UI_DIALOGS_DIR}/auth_dialog.ui
|
||||
${UI_DIALOGS_DIR}/search_dialog.ui
|
||||
)
|
||||
|
||||
# NOTE: UI/MAIN_WINDOW
|
||||
|
||||
# Main window source files
|
||||
set(MAIN_WINDOW_SOURCES
|
||||
${UI_MAIN_WINDOW_DIR}/main_window.cpp
|
||||
)
|
||||
|
||||
# Main window header files
|
||||
set(MAIN_WINDOW_HEADERS
|
||||
${UI_MAIN_WINDOW_DIR}/main_window.h
|
||||
)
|
||||
|
||||
# Main window UI files
|
||||
set(MAIN_WINDOW_UI_FILES
|
||||
${UI_MAIN_WINDOW_DIR}/main_window.ui
|
||||
)
|
||||
|
||||
# NOTE: UI/MODELS
|
||||
|
||||
# Models source files
|
||||
set(MODELS_SOURCES
|
||||
${UI_MODELS_DIR}/base_sql_table_model.cpp
|
||||
${UI_MODELS_DIR}/genres_model.cpp
|
||||
${UI_MODELS_DIR}/halls_model.cpp
|
||||
${UI_MODELS_DIR}/movies_model.cpp
|
||||
${UI_MODELS_DIR}/multi_column_filter_proxy_model.cpp
|
||||
${UI_MODELS_DIR}/refunds_model.cpp
|
||||
${UI_MODELS_DIR}/sessions_model.cpp
|
||||
${UI_MODELS_DIR}/tickets_model.cpp
|
||||
)
|
||||
|
||||
# Models header files
|
||||
set(MODELS_HEADERS
|
||||
${UI_MODELS_DIR}/base_sql_table_model.h
|
||||
${UI_MODELS_DIR}/genres_model.h
|
||||
${UI_MODELS_DIR}/halls_model.h
|
||||
${UI_MODELS_DIR}/movies_model.h
|
||||
${UI_MODELS_DIR}/multi_column_filter_proxy_model.h
|
||||
${UI_MODELS_DIR}/refunds_model.h
|
||||
${UI_MODELS_DIR}/sessions_model.h
|
||||
${UI_MODELS_DIR}/tickets_model.h
|
||||
|
||||
)
|
||||
|
||||
# NOTE: UI/WIDGETS
|
||||
|
||||
# Widgets source files
|
||||
set(WIDGETS_SOURCES
|
||||
${UI_WIDGETS_DIR}/directories_management_widget.cpp
|
||||
${UI_WIDGETS_DIR}/entity_deleter_widget.cpp
|
||||
${UI_WIDGETS_DIR}/entity_finder_widget.cpp
|
||||
${UI_WIDGETS_DIR}/entity_updater_widget.cpp
|
||||
${UI_WIDGETS_DIR}/reports_widget.cpp
|
||||
${UI_WIDGETS_DIR}/session_management_widget.cpp
|
||||
${UI_WIDGETS_DIR}/single_record_time_range_widget.cpp
|
||||
${UI_WIDGETS_DIR}/ticket_return_widget.cpp
|
||||
${UI_WIDGETS_DIR}/ticket_sale_widget.cpp
|
||||
${UI_WIDGETS_DIR}/ticket_sales_report_widget.cpp
|
||||
)
|
||||
|
||||
# Widgets header files
|
||||
set(WIDGETS_HEADERS
|
||||
${UI_WIDGETS_DIR}/directories_management_widget.h
|
||||
${UI_WIDGETS_DIR}/entity_deleter_widget.h
|
||||
${UI_WIDGETS_DIR}/entity_finder_widget.h
|
||||
${UI_WIDGETS_DIR}/entity_updater_widget.h
|
||||
${UI_WIDGETS_DIR}/reports_widget.h
|
||||
${UI_WIDGETS_DIR}/session_management_widget.h
|
||||
${UI_WIDGETS_DIR}/single_record_time_range_widget.h
|
||||
${UI_WIDGETS_DIR}/ticket_return_widget.h
|
||||
${UI_WIDGETS_DIR}/ticket_sale_widget.h
|
||||
${UI_WIDGETS_DIR}/ticket_sales_report_widget.h
|
||||
)
|
||||
|
||||
# Widgets UI files
|
||||
set(WIDGETS_UI_FILES
|
||||
${UI_MODELS_DIR}/entity_finder_widget.ui
|
||||
${UI_WIDGETS_DIR}/directories_management_widget.ui
|
||||
${UI_WIDGETS_DIR}/entity_deleter_widget.ui
|
||||
${UI_WIDGETS_DIR}/entity_updater_widget.ui
|
||||
${UI_WIDGETS_DIR}/reports_widget.ui
|
||||
${UI_WIDGETS_DIR}/session_management_widget.ui
|
||||
${UI_WIDGETS_DIR}/single_record_time_range_widget.ui
|
||||
${UI_WIDGETS_DIR}/ticket_return_widget.ui
|
||||
${UI_WIDGETS_DIR}/ticket_sale_widget.ui
|
||||
${UI_WIDGETS_DIR}/ticket_sales_report_widget.ui
|
||||
)
|
||||
|
||||
# NOTE: CORE/DB
|
||||
|
||||
# DB source files
|
||||
set(DB_SOURCES
|
||||
${CORE_DB_DIR}/database_manager.cpp
|
||||
${CORE_DB_DIR}/execute_sql_file.cpp
|
||||
)
|
||||
|
||||
# DB header files
|
||||
set(DB_HEADERS
|
||||
${CORE_DB_DIR}/database_manager.h
|
||||
${CORE_DB_DIR}/execute_sql_file.h
|
||||
)
|
||||
|
||||
# NOTE: CORE/REPOSITORIES
|
||||
|
||||
set(REPOSITORIES_SOURCES
|
||||
${CORE_REPOSITORIES_DIR}/repository_result.cpp
|
||||
)
|
||||
|
||||
set(REPOSITORIES_HEADERS
|
||||
${CORE_REPOSITORIES_DIR}/repository_result.h
|
||||
)
|
||||
|
||||
# NOTE: CORE/SERVICES
|
||||
|
||||
# Services source files
|
||||
set(SERVICES_SOURCES
|
||||
${CORE_SERVICES_DIR}/base_generator.cpp
|
||||
${CORE_SERVICES_DIR}/date_time_generator.cpp
|
||||
${CORE_SERVICES_DIR}/model_manager.cpp
|
||||
${CORE_SERVICES_DIR}/refund_generator.cpp
|
||||
${CORE_SERVICES_DIR}/relation_id_config.cpp
|
||||
${CORE_SERVICES_DIR}/repository_manager.cpp
|
||||
${CORE_SERVICES_DIR}/schema_metadata.cpp
|
||||
${CORE_SERVICES_DIR}/session_generator.cpp
|
||||
${CORE_SERVICES_DIR}/ticket_generator.cpp
|
||||
)
|
||||
|
||||
# Services header files
|
||||
set(SERVICES_HEADERS
|
||||
${CORE_SERVICES_DIR}/base_generator.h
|
||||
${CORE_SERVICES_DIR}/date_time_generator.h
|
||||
${CORE_SERVICES_DIR}/model_manager.h
|
||||
${CORE_SERVICES_DIR}/refund_generator.h
|
||||
${CORE_SERVICES_DIR}/relation_id_config.h
|
||||
${CORE_SERVICES_DIR}/repository_manager.h
|
||||
${CORE_SERVICES_DIR}/schema_metadata.h
|
||||
${CORE_SERVICES_DIR}/session_generator.h
|
||||
${CORE_SERVICES_DIR}/ticket_generator.h
|
||||
)
|
||||
|
||||
# NOTE: CORE/SQL
|
||||
|
||||
# SQL script files
|
||||
set(SQL_FILES
|
||||
${CORE_SQL_DIR}/cinema_db_create_table.sql
|
||||
${CORE_SQL_DIR}/cinema_db_create_trigger.sql
|
||||
${CORE_SQL_DIR}/cinema_db_drop_table.sql
|
||||
${CORE_SQL_DIR}/cinema_db_drop_trigger.sql
|
||||
${CORE_SQL_DIR}/cinema_db_foreign_key_off.sql
|
||||
${CORE_SQL_DIR}/cinema_db_foreign_key_on.sql
|
||||
${CORE_SQL_DIR}/cinema_db_insert.sql
|
||||
)
|
||||
|
||||
# NOTE: CORE/UTILS
|
||||
|
||||
# Utils source files
|
||||
set(UTILS_SOURCES
|
||||
${CORE_UTILS_DIR}/day_manager.cpp
|
||||
${CORE_UTILS_DIR}/reservation_manager.cpp
|
||||
|
||||
)
|
||||
|
||||
set(UTILS_HEADERS
|
||||
${CORE_UTILS_DIR}/day_manager.h
|
||||
${CORE_UTILS_DIR}/reservation_manager.h
|
||||
)
|
||||
|
||||
# NOTE: CORE/CONTROLLERS
|
||||
|
||||
# Controllers source files
|
||||
set(CONTROLLERS_SOURCES
|
||||
${CORE_CONTROLLERS_DIR}/application_controller.cpp
|
||||
${CORE_CONTROLLERS_DIR}/application_connector.cpp
|
||||
)
|
||||
|
||||
# Controllers header files
|
||||
set(CONTROLLERS_HEADERS
|
||||
${CORE_CONTROLLERS_DIR}/application_controller.h
|
||||
${CORE_CONTROLLERS_DIR}/application_connector.h
|
||||
)
|
||||
|
||||
# NOTE: DATA/SQL
|
||||
|
||||
# Implementation repository source files
|
||||
set(SQL_SOURCES
|
||||
${DATA_SQL_DIR}/base_sql_table_repository.cpp
|
||||
${DATA_SQL_DIR}/genres_repository.cpp
|
||||
${DATA_SQL_DIR}/halls_repository.cpp
|
||||
${DATA_SQL_DIR}/movies_repository.cpp
|
||||
${DATA_SQL_DIR}/refunds_repository.cpp
|
||||
${DATA_SQL_DIR}/roles_repository.cpp
|
||||
${DATA_SQL_DIR}/sessions_statistics_repository.cpp
|
||||
${DATA_SQL_DIR}/sessions_repository.cpp
|
||||
${DATA_SQL_DIR}/table_info_sqlite.cpp
|
||||
${DATA_SQL_DIR}/tickets_repository.cpp
|
||||
${DATA_SQL_DIR}/users_repository.cpp
|
||||
)
|
||||
|
||||
# Implementation repository header files
|
||||
set(SQL_HEADERS
|
||||
${DATA_SQL_DIR}/base_sql_table_repository.cpp
|
||||
${DATA_SQL_DIR}/data_repository_signals.h
|
||||
${DATA_SQL_DIR}/genres_repository.h
|
||||
${DATA_SQL_DIR}/halls_repository.h
|
||||
${DATA_SQL_DIR}/movies_repository.h
|
||||
${DATA_SQL_DIR}/refunds_repository.h
|
||||
${DATA_SQL_DIR}/roles_repository.h
|
||||
${DATA_SQL_DIR}/sessions_statistics_repository.h
|
||||
${DATA_SQL_DIR}/sessions_repository.h
|
||||
${DATA_SQL_DIR}/table_info_sqlite.cpp
|
||||
${DATA_SQL_DIR}/tickets_repository.h
|
||||
${DATA_SQL_DIR}/users_repository.h
|
||||
)
|
||||
|
||||
# NOTE: SRC
|
||||
|
||||
# Source files
|
||||
set(SRC_SOURCES
|
||||
${SRC_DIR}/main.cpp
|
||||
)
|
||||
|
||||
# NOTE: RESOURCES
|
||||
|
||||
# Resource file
|
||||
set(RESOURCES_FILES
|
||||
${CMAKE_SOURCE_DIR}/resources.qrc
|
||||
)
|
||||
@@ -0,0 +1,74 @@
|
||||
set(PATHS_INCLUDED TRUE)
|
||||
|
||||
# NOTE: PATHS
|
||||
|
||||
# Path to translations directory
|
||||
set(TRANSLATIONS_DIR "${CMAKE_SOURCE_DIR}/translations")
|
||||
|
||||
# Path to artifacts directory
|
||||
set(ARTIFACTS_DIR "${CMAKE_SOURCE_DIR}/artifacts")
|
||||
|
||||
# Core paths
|
||||
set(CORE_DIR "${CMAKE_SOURCE_DIR}/core")
|
||||
|
||||
set(CORE_CONTROLLERS_DIR "${CORE_DIR}/controllers")
|
||||
set(CORE_DB_DIR "${CORE_DIR}/db")
|
||||
set(CORE_DTO_DIR "${CORE_DIR}/dto")
|
||||
set(CORE_REPOSITORIES_DIR "${CORE_DIR}/repositories")
|
||||
set(CORE_REQUESTS_DIR "${CORE_DIR}/requests")
|
||||
set(CORE_SERVICES_DIR "${CORE_DIR}/services")
|
||||
set(CORE_SQL_DIR "${CORE_DIR}/sql")
|
||||
set(CORE_UTILS_DIR "${CORE_DIR}/utils")
|
||||
|
||||
# Grouped paths
|
||||
set(CORE_PATHS
|
||||
${CORE_CONTROLLERS_DIR}
|
||||
${CORE_DB_DIR}
|
||||
${CORE_DTO_DIR}
|
||||
${CORE_REPOSITORIES_DIR}
|
||||
${CORE_REQUESTS_DIR}
|
||||
${CORE_SERVICES_DIR}
|
||||
${CORE_SQL_DIR}
|
||||
${CORE_UTILS_DIR}
|
||||
)
|
||||
|
||||
# UI paths
|
||||
set(UI_DIR "${CMAKE_SOURCE_DIR}/ui")
|
||||
|
||||
set(UI_DELEGATES_DIR "${UI_DIR}/delegates")
|
||||
set(UI_DIALOGS_DIR "${UI_DIR}/dialogs")
|
||||
set(UI_MAIN_WINDOW_DIR "${UI_DIR}/main_window")
|
||||
set(UI_MODELS_DIR "${UI_DIR}/models")
|
||||
set(UI_WIDGETS_DIR "${UI_DIR}/widgets")
|
||||
|
||||
# Grouped paths
|
||||
set(UI_PATHS
|
||||
${UI_DELEGATES_DIR}
|
||||
${UI_DIALOGS_DIR}
|
||||
${UI_MAIN_WINDOW_DIR}
|
||||
${UI_MODELS_DIR}
|
||||
${UI_WIDGETS_DIR}
|
||||
)
|
||||
|
||||
# Path to source directory
|
||||
set(SRC_DIR "${CMAKE_SOURCE_DIR}/src")
|
||||
|
||||
# Path to tests schema directory
|
||||
set(TESTS_CLASS_DIR "${CMAKE_SOURCE_DIR}/tests_class")
|
||||
set(TESTS_SCHEMA_DIR "${CMAKE_SOURCE_DIR}/tests_schema")
|
||||
|
||||
# Path to data directory
|
||||
set(DATA_DIR "${CMAKE_SOURCE_DIR}/data")
|
||||
set(DATA_SQL_DIR "${DATA_DIR}/sql")
|
||||
|
||||
# NOTE: INCLUDES
|
||||
|
||||
include_directories(
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CORE_PATHS}
|
||||
${DATA_SQL_DIR}
|
||||
${SRC_DIR}
|
||||
${UI_PATHS}
|
||||
)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# Enable additional Qt features
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
|
||||
# Specify the C++ standard
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
# add_compile_options(-std=c++20)
|
||||
|
||||
# Get the Qt environment variables
|
||||
set(QT_UIC_EXECUTABLE "$ENV{QT_UIC_EXECUTABLE}")
|
||||
set(QT_MOC_EXECUTABLE "$ENV{QT_MOC_EXECUTABLE}")
|
||||
|
||||
# Enable CMake to generate compile_commands.json
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Set the database name
|
||||
set(DATABASE_NAME "database.db")
|
||||
|
||||
# Set the database driver
|
||||
set(DATABASE_DRIVER "QSQLITE")
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
print_important_message("Additional information")
|
||||
message(STATUS "C++ Standard: ${CMAKE_CXX_STANDARD}")
|
||||
|
||||
# Add the main executable
|
||||
add_executable(${PROJECT_NAME}
|
||||
${HEADERS}
|
||||
${RESOURCES}
|
||||
${SOURCES}
|
||||
${UI_HEADERS}
|
||||
)
|
||||
|
||||
# Link with Qt libraries
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
Qt6::Charts
|
||||
Qt6::Core
|
||||
Qt6::Gui
|
||||
Qt6::Sql
|
||||
Qt6::Widgets
|
||||
)
|
||||
@@ -0,0 +1,33 @@
|
||||
# Update translations
|
||||
find_program(LUPDATE_EXECUTABLE lupdate REQUIRED)
|
||||
if(NOT LUPDATE_EXECUTABLE)
|
||||
message(WARNING "The 'lupdate' program was not found. Translation update will be skipped.")
|
||||
return()
|
||||
endif()
|
||||
|
||||
add_custom_target(update_translations ALL
|
||||
COMMAND ${LUPDATE_EXECUTABLE} ${CMAKE_SOURCE_DIR} -ts ${TRANSLATIONS}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
COMMENT "Updating translation files"
|
||||
)
|
||||
|
||||
# Compile translations
|
||||
find_program(LRELEASE_EXECUTABLE lrelease REQUIRED)
|
||||
if(NOT LRELEASE_EXECUTABLE)
|
||||
message(WARNING "The 'lrelease' program was not found. Translation compilation will be skipped.")
|
||||
return()
|
||||
endif()
|
||||
|
||||
foreach(TRANSLATION ${TRANSLATIONS})
|
||||
get_filename_component(QM_FILE ${TRANSLATION} NAME_WE)
|
||||
set(QM_FILE ${CMAKE_BINARY_DIR}/translations/${QM_FILE}.qm)
|
||||
add_custom_command(OUTPUT ${QM_FILE}
|
||||
COMMAND ${LRELEASE_EXECUTABLE} ${TRANSLATION} -qm ${QM_FILE}
|
||||
DEPENDS ${TRANSLATION}
|
||||
COMMENT "Compiling ${QM_FILE}"
|
||||
)
|
||||
list(APPEND QM_FILES ${QM_FILE})
|
||||
endforeach()
|
||||
|
||||
# Create translations target
|
||||
add_custom_target(translations ALL DEPENDS ${QM_FILES})
|
||||
Reference in New Issue
Block a user