-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
72 lines (60 loc) · 2.08 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
cmake_minimum_required(VERSION 3.23...3.28)
project(MyProject VERSION 0.1.0 LANGUAGES CXX)
option(BUILD_TESTING "Build test executables" ON)
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
if(NOT PROJECT_IS_TOP_LEVEL)
set(BUILD_TESTING OFF)
option(${PROJECT_NAME}_BUILD_TESTING "Build ${PROJECT_NAME} test executables" OFF)
option(${PROJECT_NAME}_INSTALL "Install ${PROJECT_NAME} targets" OFF)
endif()
# Project-wide setup
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIG>/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIG>/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIG>/lib)
set(CMAKE_PDB_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIG>/lib)
# Dependencies
# TODO: Add find_package() calls here
# Targets
if(BUILD_TESTING)
enable_testing()
# TODO: If you have a test driver, call find_package(... REQUIRED) here
endif()
add_subdirectory(lib1)
add_subdirectory(lib2)
# Testing
if(BUILD_TESTING)
add_subdirectory(tests)
endif()
# Installation
if(PROJECT_IS_TOP_LEVEL OR ${PROJECT_NAME}_INSTALL)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/../install" CACHE PATH "" FORCE)
endif()
include(GNUInstallDirs)
set(CONFIG_FILES ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
install(EXPORT ${PROJECT_NAME}Targets
NAMESPACE ${PROJECT_NAME}::
DESTINATION ${CONFIG_FILES}
)
include(CMakePackageConfigHelpers)
configure_package_config_file(
${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in
${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION ${CONFIG_FILES}
)
write_basic_package_version_file(
${PROJECT_NAME}ConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(FILES
${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${CONFIG_FILES}
)
endif()