ModelRailroadTimetablePlanner/CMakeLists.txt

126 lines
3.9 KiB
CMake
Raw Normal View History

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 ##
set(DB_FORMAT_VERSION 8)
2021-03-16 10:46:22 +01: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")
set(APP_COMPANY_NAME_LOWER "trainsoftware")
2021-03-16 10:46:22 +01: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
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)
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)
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)
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)
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)
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)
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)
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)
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)
set(MR_TIMETABLE_PLANNER_DEFINITIONS ${MR_TIMETABLE_PLANNER_DEFINITIONS} -DAPPVERSION="${PROJECT_VERSION}" -DQT_DEPRECATED_WARNINGS)
2021-03-16 10:46:22 +01: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)
# 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)
find_package(LibZip)
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG false)
2021-03-16 10:46:22 +01:00
if(BUILD_DOXYGEN)
find_package(Doxygen)
endif()
include(LocateWinDeployQt)
2021-03-16 10:46:22 +01:00
set(CMAKE_INCLUDE_CURRENT_DIR ON)
add_subdirectory(src)
add_subdirectory(packaging)
include(Packing)