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:
parent
9391ce636a
commit
6ea6bdd2ea
11 changed files with 84 additions and 103 deletions
50
cmake/options.cmake
Normal file
50
cmake/options.cmake
Normal 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()
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue