# Initialize ###################################################################################### Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE ) Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC ) Include ( strip_symbols OPTIONAL RESULT_VARIABLE HAS_STRIP_SYMBOLS ) Find_Package ( Sanitizers QUIET ) Find_Package ( cppcore QUIET ) If ( cppcore ) Set ( CPPLOGGING_HAS_CPPCORE true ) EndIf ( ) Find_Package ( nlohmann_json QUIET ) If ( nlohmann_json_FOUND ) Set ( CPPLOGGING_HAS_NLOHMANN_JSON true ) EndIf ( ) # Object Library ################################################################################## Set ( CPPLOGGING_GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated/include ) Configure_File ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/config.h.in ${CPPLOGGING_GENERATED_INCLUDE_DIR}/cpplogging/config.h ) Set ( CMAKE_POSITION_INDEPENDENT_CODE ON ) Set ( CPPLOGGING_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include ) File ( GLOB_RECURSE CPPLOGGING_HEADER_FILES ${CPPLOGGING_INCLUDE_DIR}/*.h ) File ( GLOB_RECURSE CPPLOGGING_INLINE_FILES ${CPPLOGGING_INCLUDE_DIR}/*.inl ) File ( GLOB_RECURSE CPPLOGGING_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) Add_Library ( cpplogging-objects OBJECT ${CPPLOGGING_HEADER_FILES} ${CPPLOGGING_INLINE_FILES} ${CPPLOGGING_SOURCE_FILES} ) If ( CPPLOGGING_HAS_CPPCORE ) Target_Link_Libraries ( cpplogging-objects PRIVATE cppcore::cppcore ) EndIf ( ) If ( CPPLOGGING_HAS_NLOHMANN_JSON ) Target_Link_Libraries ( cpplogging-objects PRIVATE nlohmann_json::nlohmann_json ) EndIf ( ) Target_Include_Directories ( cpplogging-objects PUBLIC $ $ $ ) # Static Library ################################################################################## Add_Library ( cpplogging-static STATIC $ ) Set_Target_Properties ( cpplogging-static PROPERTIES OUTPUT_NAME "${CPPLOGGING_OUTPUTNAME}" VERSION ${CPPLOGGING_VERSION} ) Target_Include_Directories ( cpplogging-static PUBLIC $ $ $ ) # Shared Library ################################################################################## Add_Library ( cpplogging-shared SHARED $ ) Set_Target_Properties ( cpplogging-shared PROPERTIES OUTPUT_NAME "${CPPLOGGING_OUTPUTNAME}" VERSION ${CPPLOGGING_VERSION} SOVERSION ${CPPLOGGING_VERSION_SHORT} ) Target_Include_Directories ( cpplogging-shared PUBLIC $ $ $ ) # Optimization #################################################################################### # sanitizers If ( Sanitizers_FOUND ) Add_Sanitizers ( cpplogging-objects ) EndIf ( ) # pedantic If ( HAS_PEDANTIC ) Pedantic_Apply_Flags_Target ( cpplogging-objects ALL ) Pedantic_Apply_Flags_Target ( cpplogging-static ALL ) Pedantic_Apply_Flags_Target ( cpplogging-shared ALL ) EndIf ( ) # cotire If ( HAS_COTIRE ) Cotire ( cpplogging-objects ) Cotire ( cpplogging-static ) Cotire ( cpplogging-shared ) EndIf ( ) # Install ######################################################################################### Set ( CPPLOGGING_HAS_EXPORT False PARENT_SCOPE ) # Header If ( CPPLOGGING_INSTALL_HEADER ) Install ( DIRECTORY ${CPPLOGGING_INCLUDE_DIR}/cpplogging DESTINATION ${CPPLOGGING_INSTALL_DIR_INCLUDE} ) Install ( DIRECTORY ${CPPLOGGING_GENERATED_INCLUDE_DIR}/cpplogging DESTINATION ${CPPLOGGING_INSTALL_DIR_INCLUDE} ) EndIf ( ) # Static If ( CPPLOGGING_INSTALL_STATIC ) Set ( CPPLOGGING_HAS_EXPORT True PARENT_SCOPE ) Install ( TARGETS cpplogging-static EXPORT cpplogging DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} ) EndIf ( ) # Shared If ( CPPLOGGING_INSTALL_SHARED ) Set ( CPPLOGGING_HAS_EXPORT True PARENT_SCOPE ) Install ( TARGETS cpplogging-shared EXPORT cpplogging DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} ) EndIf ( ) # Debug If ( HAS_STRIP_SYMBOLS AND NOT CPPLOGGING_NO_STRIP ) Strip_Symbols ( cpplogging-shared CPPLOGGING_DBG_FILE ) If ( CPPLOGGING_INSTALL_DEBUG ) Install ( FILES ${CPPLOGGING_DBG_FILE} DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} ) EndIf ( ) EndIf ( )