|
1 | 1 | # # TPL ## HEAD ##########
|
2 | 2 | cmake_minimum_required(VERSION 3.11)
|
3 |
| -set(CMAKE_SCRIPTS "cmake") |
4 |
| -set(CMAKE_MODULE_PATH |
5 |
| - ${CMAKE_SOURCE_DIR}/addons |
6 |
| - ${CMAKE_SOURCE_DIR}/${CMAKE_SCRIPTS}/modules |
7 |
| - ${CMAKE_SOURCE_DIR}/${CMAKE_SCRIPTS} |
8 |
| - ${CMAKE_SOURCE_DIR} # for .version.cmake & .options.cmake |
9 |
| - ${CMAKE_MODULE_PATH}) |
10 |
| -include(prerequisites) |
11 |
| - |
12 |
| -# include(dummy-project) |
| 3 | + |
| 4 | +# ### INCLUDES ########################################################## |
| 5 | +include(${CMAKE_SOURCE_DIR}/cmake/prerequisites.cmake) |
| 6 | + |
| 7 | +# use_vcpkg() |
| 8 | + |
| 9 | +# ### DEFINITIONS ####################################################### |
| 10 | +set(PROJECT_MACRO_NAME cmdr-cxx) |
| 11 | +set(PROJECT_MACRO_SHORT_NAME cmdr) |
| 12 | +set(PROJECT_MACRO_MID_NAME cmdr11) |
| 13 | +set(PROJECT_MACRO_PREFIX "CMDR") |
| 14 | +set_property( GLOBAL PROPERTY PROJECT_MAINTAINER "hedzr <[email protected]>") |
| 15 | + |
| 16 | +# ### OPTIONS ########################################################### |
| 17 | + |
| 18 | +# option(OK "PL-OK" ON) |
| 19 | + |
| 20 | +# option(${PROJECT_MACRO_PREFIX}_BUILD_TESTS_EXAMPLES "Build Test Examples OK" OFF) |
| 21 | +# option(${PROJECT_MACRO_PREFIX}_BUILD_DOCS "Build Docs-OK" OFF) |
| 22 | + |
| 23 | +# the following options are just used for executables |
| 24 | +option(${PROJECT_MACRO_PREFIX}_ENABLE_ASSERTIONS "Enable Assertions" OFF) |
| 25 | +option(${PROJECT_MACRO_PREFIX}_ENABLE_PRECONDITION_CHECKS "Enable Precondition Checks" OFF) |
| 26 | +option(${PROJECT_MACRO_PREFIX}_ENABLE_THREAD_POOL_READY_SIGNAL "Enable ready signal actions in thread_pool template class" OFF) |
| 27 | +option(${PROJECT_MACRO_PREFIX}_ENABLE_VERBOSE_LOG "Enable `dbg_verbose_debug` macro definition (TRACE MODE)" OFF) |
| 28 | +option(${PROJECT_MACRO_PREFIX}_TEST_THREAD_POOL_DBGOUT "Enable `pool_debug` macro definition" OFF) |
| 29 | +option(${PROJECT_MACRO_PREFIX}_UNIT_TEST "Enable the extra unit-tests" OFF) |
| 30 | + |
| 31 | + |
| 32 | +# ### PROJECTS PREPARE ################################################## |
| 33 | +if(ENABLE_TESTS) |
| 34 | + include(CTest) |
| 35 | +endif() |
| 36 | + |
| 37 | +find_package(Threads REQUIRED) |
| 38 | + |
| 39 | +# ### PROJECTS ########################################################## |
13 | 40 | project(cmdr-cxx
|
14 | 41 | VERSION ${VERSION}
|
15 | 42 | DESCRIPTION "cmdr-cxx is a POSIX-compliant command-line arguments parser in C++, its part of cmdr series."
|
16 | 43 | LANGUAGES CXX)
|
| 44 | +debug_print_project_title() |
17 | 45 |
|
18 | 46 | set(VERSION_H_NAME "cmdr-version.hh")
|
19 | 47 |
|
20 |
| -# include(cxx-standard-def) |
21 |
| -include(cxx-detect-compilers) |
22 |
| -include(setup-build-env) |
| 48 | +# Enable C++ Standard 17/20 here. Change it on fist configuring, or update it with new value: |
| 49 | +# cmake -S. -Bbuild -DCXX_STANDARD:STRING=20 |
| 50 | +set(CXX_STANDARD 17 CACHE STRING "Define The C++ Standard, default is 17") |
| 51 | +enable_cxx_standard(CXX_STANDARD) |
23 | 52 |
|
24 |
| -debug_print_top_vars() |
| 53 | +# if(ENABLE_TESTS) |
| 54 | +# include(load-catch2) |
| 55 | +# endif() |
25 | 56 |
|
26 |
| -# # TPL ## HEAD END ########## |
27 |
| -set(PROJECT_MACRO_NAME cmdr-cxx) |
28 |
| -set(PROJECT_MACRO_SHORT_NAME cmdr) |
29 |
| -set(PROJECT_MACRO_MID_NAME cmdr11) |
30 |
| -set(PROJECT_MACRO_PREFIX "CMDR") |
| 57 | +# # when using compiler with cmake multi-config feature, a special build type 'Asan' can be used for sanitizing test. |
| 58 | +# enable_sanitizer_for_multi_config() |
| 59 | + |
| 60 | +# # include(cxx-standard-def) |
| 61 | +# include(cxx-detect-compilers) |
| 62 | +# include(setup-build-env) |
| 63 | + |
| 64 | +# debug_print_top_vars() |
31 | 65 |
|
32 | 66 | gen_versions(${PROJECT_MACRO_NAME} ${PROJECT_MACRO_PREFIX}
|
33 | 67 | ${PROJECT_MACRO_SHORT_NAME}-version.hh
|
|
0 commit comments