1
0
Fork 0
mirror of https://github.com/TheLartians/ModernCppStarter.git synced 2025-09-03 23:50:53 +02:00

add options.cmake project config file

common options used for every cmake project
prevent reame of standalone executable via cmake properties
This commit is contained in:
ClausKlein 2021-02-17 10:31:56 +01:00
parent 9391ce636a
commit 6ea6bdd2ea
11 changed files with 84 additions and 103 deletions

50
cmake/options.cmake Normal file
View file

@ -0,0 +1,50 @@
# only activate options for top level project
if(NOT PROJECT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
return()
endif()
option(BUILD_SHARED_LIBS "Create shared libraries" YES)
# Set default visibility to hidden for all targets
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN YES)
# build the dynamic libraries and executables together at bin directory
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
if(NOT DEFINED CMAKE_CXX_STANDARD)
option(CXX_STANDARD_REQUIRED "Require c++ standard" YES)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_EXTENSIONS NO)
endif()
# this reduce build time if using Nina generators
option(CMAKE_DEPENDS_IN_PROJECT_ONLY "do NOT use system header files for dependency checking" YES)
if(NOT MSVC)
if(CMAKE_DEPENDS_IN_PROJECT_ONLY)
set(CMAKE_DEPFILE_FLAGS_C
"-MMD"
CACHE STRING "dependency flag" FORCE
)
set(CMAKE_DEPFILE_FLAGS_CXX
"-MMD"
CACHE STRING "dependency flag" FORCE
)
else()
set(CMAKE_DEPFILE_FLAGS_C
"-MD"
CACHE STRING "dependency flag" FORCE
)
set(CMAKE_DEPFILE_FLAGS_CXX
"-MD"
CACHE STRING "dependency flag" FORCE
)
endif()
endif()
option(CMAKE_EXPORT_COMPILE_COMMANDS "support clang-tidy, cppcheck, ..." YES)
if(CMAKE_EXPORT_COMPILE_COMMANDS)
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
endif()

View file

@ -9,15 +9,7 @@ endif()
include(${CMAKE_CURRENT_LIST_DIR}/CPM.cmake)
CPMUsePackageLock(package-lock.cmake)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
if(NOT DEFINED CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS NO)
endif()
include(${CMAKE_CURRENT_LIST_DIR}/options.cmake)
# option: default not set
set(USE_STATIC_ANALYZER