|
1 | 1 | cmake_minimum_required(VERSION 3.16 FATAL_ERROR) |
2 | 2 |
|
3 | | -project(ulog_cpp LANGUAGES CXX) |
| 3 | +project(ulog_cpp |
| 4 | + VERSION 1.0.0 |
| 5 | + LANGUAGES CXX |
| 6 | + DESCRIPTION "C++ library for handling ULog files" |
| 7 | +) |
4 | 8 |
|
5 | | -# Determine if ulog_cpp is built as a subproject (using add_subdirectory) or if it is the main project. |
6 | | -set(MAIN_PROJECT OFF) |
7 | | -if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) |
8 | | - set(MAIN_PROJECT ON) |
9 | | -endif() |
| 9 | +include(CMakeDependentOption) |
| 10 | + |
| 11 | +cmake_dependent_option(ULOG_CPP_INSTALL "Install the ulog_cpp folder to include/ during install process" |
| 12 | + ON "CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME" OFF) |
| 13 | +cmake_dependent_option(ULOG_CPP_BUILD_TESTS "Build ulog_cpp tests" ON |
| 14 | + "CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME" OFF) |
10 | 15 |
|
11 | 16 | # Default to C++17 |
12 | 17 | if(NOT CMAKE_CXX_STANDARD) |
13 | 18 | set(CMAKE_CXX_STANDARD 17) |
| 19 | + set(CMAKE_CXX_STANDARD_REQUIRED ON) |
| 20 | + set(CMAKE_CXX_EXTENSIONS OFF) |
14 | 21 | endif() |
15 | 22 |
|
16 | 23 | set(CMAKE_EXPORT_COMPILE_COMMANDS ON) |
17 | 24 |
|
18 | 25 | add_subdirectory(ulog_cpp) |
19 | 26 |
|
20 | | -if(MAIN_PROJECT) |
| 27 | +# Only create and install the config files if this is the main project |
| 28 | +if(ULOG_CPP_INSTALL) |
| 29 | + include(GNUInstallDirs) |
21 | 30 | include(CMakePackageConfigHelpers) |
22 | 31 |
|
23 | | - write_basic_package_version_file( |
24 | | - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" |
25 | | - VERSION 1.0.0 |
26 | | - COMPATIBILITY AnyNewerVersion |
27 | | - ) |
| 32 | + # Create a config file that includes the export |
| 33 | + configure_package_config_file( |
| 34 | + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in |
| 35 | + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake |
| 36 | + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} |
| 37 | + ) |
28 | 38 |
|
29 | | - configure_package_config_file( |
30 | | - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in" |
31 | | - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" |
32 | | - INSTALL_DESTINATION lib/cmake/${PROJECT_NAME} |
33 | | - ) |
| 39 | + # Create a version file |
| 40 | + write_basic_package_version_file( |
| 41 | + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake |
| 42 | + VERSION ${PROJECT_VERSION} |
| 43 | + COMPATIBILITY SameMajorVersion |
| 44 | + ) |
34 | 45 |
|
35 | | - install(FILES |
36 | | - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" |
37 | | - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" |
38 | | - DESTINATION lib/cmake/${PROJECT_NAME} |
39 | | - ) |
| 46 | + # Install the config files |
| 47 | + install(FILES |
| 48 | + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake |
| 49 | + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake |
| 50 | + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} |
| 51 | + ) |
40 | 52 |
|
41 | 53 |
|
42 | 54 | add_compile_options( |
@@ -69,7 +81,10 @@ if(MAIN_PROJECT) |
69 | 81 | include(clang_format) |
70 | 82 |
|
71 | 83 | add_subdirectory(examples) |
72 | | - add_subdirectory(test) |
| 84 | + |
| 85 | + if (ULOG_CPP_BUILD_TESTS) |
| 86 | + add_subdirectory(test) |
| 87 | + endif() |
73 | 88 |
|
74 | 89 | endif() |
75 | 90 |
|
|
0 commit comments