1
0
Fork 0
mirror of https://github.com/TheLartians/ModernCppStarter.git synced 2025-08-31 22:21:13 +02:00
ModernCppStarter/cmake/options.cmake
ClausKlein 6ea6bdd2ea add options.cmake project config file
common options used for every cmake project
prevent reame of standalone executable via cmake properties
2021-02-17 10:31:56 +01:00

50 lines
1.5 KiB
CMake

# 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()