2021-08-27 16:37:18 +02:00
|
|
|
cmake_minimum_required(VERSION 3.17)
|
2021-03-16 10:46:22 +01:00
|
|
|
include(CMakeDependentOption)
|
|
|
|
|
2022-01-27 19:07:02 +01:00
|
|
|
project(ModelRailroadTimetablePlanner VERSION 6.1.0 LANGUAGES CXX)
|
2021-03-16 10:46:22 +01:00
|
|
|
|
|
|
|
option(UPDATE_TS "Update translations" OFF)
|
|
|
|
option(UPDATE_TS_KEEP_OBSOLETE "Keep obsolete entries when updating translations" ON)
|
|
|
|
option(BUILD_DOXYGEN "Build Doxygen documentation" OFF)
|
|
|
|
|
|
|
|
if (WIN32)
|
|
|
|
option(RUN_WINDEPLOYQT "Run windeployqt after executable is installed" ON)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
## Defines ##
|
|
|
|
|
2021-03-21 11:56:31 +01:00
|
|
|
set(DB_FORMAT_VERSION 8)
|
2021-03-16 10:46:22 +01:00
|
|
|
|
2021-08-26 14:59:14 +02:00
|
|
|
set(APP_PRODUCT_NAME "ModelRailroadTimetablePlanner")
|
|
|
|
set(APP_DISPLAY_NAME "Model Railroad Timetable Planner")
|
2021-03-16 10:46:22 +01:00
|
|
|
set(APP_COMPANY_NAME "Train Software")
|
2021-12-02 13:17:57 +01:00
|
|
|
set(APP_COMPANY_NAME_LOWER "trainsoftware")
|
2021-03-16 10:46:22 +01:00
|
|
|
|
2021-08-27 10:28:56 +02:00
|
|
|
set(PROJECT_HOMEPAGE_URL "https://github.com/gfgit/ModelRailroadTimetablePlanner")
|
|
|
|
set(APP_HELP_URL ${PROJECT_HOMEPAGE_URL})
|
|
|
|
set(APP_UPDATE_URL ${PROJECT_HOMEPAGE_URL})
|
2021-03-16 10:46:22 +01:00
|
|
|
|
|
|
|
set(PROJECT_DESCRIPTION "${APP_DISPLAY_NAME} lets you create and manage model railway sessions")
|
|
|
|
|
|
|
|
set(APP_ICON ${CMAKE_SOURCE_DIR}/files/icons/icon.ico)
|
|
|
|
|
|
|
|
# Create main application target
|
2021-08-26 14:59:14 +02:00
|
|
|
set(MR_TIMETABLE_PLANNER_TARGET "mrtplanner")
|
2021-03-16 10:46:22 +01:00
|
|
|
|
|
|
|
## defines end ##
|
|
|
|
|
|
|
|
## CUSTOM CONFIGURATION ##
|
|
|
|
|
|
|
|
option(CONFIG_GLOBAL_TRY_CATCH "Global try/catch at main()" OFF)
|
|
|
|
option(CONFIG_NO_DEBUG_CALL_TRACE "Disable scope call trace messages" OFF)
|
|
|
|
option(CONFIG_PRINT_DBG_MSG "Debug messages (some)" ON)
|
|
|
|
option(CONFIG_ENABLE_BACKGROUND_MANAGER "Enable background task manager" ON)
|
|
|
|
cmake_dependent_option(CONFIG_ENABLE_RS_CHECKER "Enable rollingstock checker" ON "CONFIG_ENABLE_BACKGROUND_MANAGER" OFF)
|
|
|
|
cmake_dependent_option(CONFIG_SEARCHBOX_MODE_ASYNC "Use thread to search for jobs" ON "CONFIG_ENABLE_BACKGROUND_MANAGER" OFF)
|
|
|
|
option(CONFIG_ENABLE_AUTO_TIME_RECALC "Automatic recalculation of travel times based on rollingstock speed, experimental" OFF)
|
|
|
|
option(CONFIG_ENABLE_USER_QUERY "Enable SQL console" OFF)
|
|
|
|
|
|
|
|
if(CONFIG_GLOBAL_TRY_CATCH)
|
2021-08-26 14:59:14 +02:00
|
|
|
set(MR_TIMETABLE_PLANNER_DEFINITIONS ${MR_TIMETABLE_PLANNER_DEFINITIONS} -DGLOBAL_TRY_CATCH)
|
2021-03-16 10:46:22 +01:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CONFIG_NO_DEBUG_CALL_TRACE)
|
2021-08-26 14:59:14 +02:00
|
|
|
set(MR_TIMETABLE_PLANNER_DEFINITIONS ${MR_TIMETABLE_PLANNER_DEFINITIONS} -DNO_DEBUG_CALL_TRACE)
|
2021-03-16 10:46:22 +01:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CONFIG_PRINT_DBG_MSG)
|
2021-08-26 14:59:14 +02:00
|
|
|
set(MR_TIMETABLE_PLANNER_DEFINITIONS ${MR_TIMETABLE_PLANNER_DEFINITIONS} -DPRINT_DBG_MSG)
|
2021-03-16 10:46:22 +01:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CONFIG_ENABLE_BACKGROUND_MANAGER)
|
2021-08-26 14:59:14 +02:00
|
|
|
set(MR_TIMETABLE_PLANNER_DEFINITIONS ${MR_TIMETABLE_PLANNER_DEFINITIONS} -DENABLE_BACKGROUND_MANAGER)
|
2021-03-16 10:46:22 +01:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CONFIG_ENABLE_RS_CHECKER)
|
2021-08-26 14:59:14 +02:00
|
|
|
set(MR_TIMETABLE_PLANNER_DEFINITIONS ${MR_TIMETABLE_PLANNER_DEFINITIONS} -DENABLE_RS_CHECKER)
|
2021-03-16 10:46:22 +01:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CONFIG_SEARCHBOX_MODE_ASYNC)
|
2021-08-26 14:59:14 +02:00
|
|
|
set(MR_TIMETABLE_PLANNER_DEFINITIONS ${MR_TIMETABLE_PLANNER_DEFINITIONS} -DSEARCHBOX_MODE_ASYNC)
|
2021-03-16 10:46:22 +01:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CONFIG_ENABLE_AUTO_TIME_RECALC)
|
2021-08-26 14:59:14 +02:00
|
|
|
set(MR_TIMETABLE_PLANNER_DEFINITIONS ${MR_TIMETABLE_PLANNER_DEFINITIONS} -DENABLE_AUTO_TIME_RECALC)
|
2021-03-16 10:46:22 +01:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CONFIG_ENABLE_USER_QUERY)
|
2021-08-26 14:59:14 +02:00
|
|
|
set(MR_TIMETABLE_PLANNER_DEFINITIONS ${MR_TIMETABLE_PLANNER_DEFINITIONS} -DENABLE_USER_QUERY)
|
2021-03-16 10:46:22 +01:00
|
|
|
endif()
|
|
|
|
|
|
|
|
## Config end ##
|
|
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
#set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
|
|
|
|
set(CMAKE_AUTOUIC ON)
|
|
|
|
set(CMAKE_AUTOMOC ON)
|
|
|
|
set(CMAKE_AUTORCC ON)
|
|
|
|
|
2021-08-26 14:59:14 +02:00
|
|
|
set(MR_TIMETABLE_PLANNER_DEFINITIONS ${MR_TIMETABLE_PLANNER_DEFINITIONS} -DAPPVERSION="${PROJECT_VERSION}" -DQT_DEPRECATED_WARNINGS)
|
2021-03-16 10:46:22 +01:00
|
|
|
|
2021-08-27 10:28:56 +02:00
|
|
|
# Include our custom FindXXX moudules in '/cmake' subdirectory
|
2021-03-16 10:46:22 +01:00
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
|
|
|
|
|
|
|
find_package(Qt5 REQUIRED
|
|
|
|
COMPONENTS
|
|
|
|
Core
|
|
|
|
Gui
|
|
|
|
Widgets
|
|
|
|
Svg
|
|
|
|
PrintSupport
|
|
|
|
LinguistTools)
|
|
|
|
|
|
|
|
find_package(SQLite3)
|
|
|
|
find_package(ZLIB)
|
2021-10-16 11:43:29 +02:00
|
|
|
find_package(ssplib)
|
2021-08-27 16:37:18 +02:00
|
|
|
|
|
|
|
# Prefer config files shipped with 'libzip'
|
|
|
|
# If not found, it will fallback to out custom FindLibZip.cmake module
|
|
|
|
# Located in '/cmake' subdirectory
|
|
|
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG true)
|
2021-08-26 19:03:57 +02:00
|
|
|
find_package(LibZip)
|
2021-08-27 16:37:18 +02:00
|
|
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG false)
|
2021-03-16 10:46:22 +01:00
|
|
|
|
|
|
|
if(BUILD_DOXYGEN)
|
|
|
|
find_package(Doxygen)
|
|
|
|
endif()
|
|
|
|
|
2022-02-03 16:00:01 +01:00
|
|
|
include(LocateWinDeployQt)
|
2021-03-16 10:46:22 +01:00
|
|
|
|
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
|
|
|
|
add_subdirectory(src)
|
|
|
|
add_subdirectory(packaging)
|
|
|
|
|
2021-12-01 12:12:47 +01:00
|
|
|
include(Packing)
|