|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- # 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 )
-
- Message ( WARNING "Please configure the dependencies of this project!" )
- Find_Package ( libhelloworld REQUIRED )
-
- # Object Library ##################################################################################
-
- Set ( HELLOWORLD_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
- File ( GLOB_RECURSE HELLOWORLD_HEADER_FILES ${HELLOWORLD_INCLUDE_DIR}/*.h )
- File ( GLOB_RECURSE HELLOWORLD_INLINE_FILES ${HELLOWORLD_INCLUDE_DIR}/*.inl )
- File ( GLOB_RECURSE HELLOWORLD_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
- List ( REMOVE_ITEM HELLOWORLD_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp )
- Add_Library ( helloworld-objects
- OBJECT
- ${HELLOWORLD_HEADER_FILES}
- ${HELLOWORLD_INLINE_FILES}
- ${HELLOWORLD_SOURCE_FILES} )
- Target_Include_Directories ( helloworld-objects
- PUBLIC
- $<BUILD_INTERFACE:${HELLOWORLD_INCLUDE_DIR}>
- $<INSTALL_INTERFACE:${HELLOWORLD_INSTALL_DIR_INCLUDE}> )
- Target_Link_Libraries ( helloworld-objects
- PUBLIC
- libhelloworld-shared )
-
- # Executable ######################################################################################
-
- Set ( HELLOWORLD_MAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp )
- Add_Executable ( helloworld ${HELLOWORLD_MAIN_FILE} )
- Target_Link_Libraries ( helloworld
- PUBLIC
- helloworld-objects )
-
- # Optimization ####################################################################################
-
- # sanitizers
- If ( Sanitizers_FOUND )
- Add_Sanitizers ( helloworld-objects )
- Add_Sanitizers ( helloworld )
- EndIf ( )
-
- # pedantic
- If ( HAS_PEDANTIC )
- Pedantic_Apply_Flags_Target ( helloworld-objects ALL )
- Pedantic_Apply_Flags_Target ( helloworld ALL )
- EndIf ( )
-
- # cotire
- If ( HAS_COTIRE )
- Cotire ( helloworld-objects )
- Cotire ( helloworld )
- EndIf ( )
-
- # Install #########################################################################################
-
- # Executable
- Install ( TARGETS helloworld
- DESTINATION ${HELLOWORLD_INSTALL_DIR_BIN} )
-
- # Debug
- If ( HAS_STRIP_SYMBOLS AND NOT HELLOWORLD_NO_STRIP )
- Strip_Symbols ( helloworld HELLOWORLD_DBG_FILE )
- If ( HELLOWORLD_INSTALL_DEBUG )
- Install ( FILES ${HELLOWORLD_DBG_FILE}
- DESTINATION ${HELLOWORLD_INSTALL_DIR_LIB} )
- EndIf ( )
- EndIf ( )
|