diff --git a/CMLibCodeCoverage.cmake b/CMLibCodeCoverage.cmake index 3ae2529..2277a43 100644 --- a/CMLibCodeCoverage.cmake +++ b/CMLibCodeCoverage.cmake @@ -7,9 +7,7 @@ function(add_code_coverage target) if(CMLIB_ENABLE_CODE_COVERAGE) if(CMAKE_CXX_COMPILER_IS_GCC) target_compile_options(${target} PUBLIC "--coverage") - get_target_property(LF ${target} LINK_FLAGS) - string(APPEND LF " --coverage") - set_target_properties(${target} PROPERTIES LINK_FLAGS ${LF}) + set_property(TARGET ${target} APPEND PROPERTY LINK_FLAGS "--coverage") if(LCOV_EXE) add_custom_target( diff --git a/CMLibCommonTargetProperties.cmake b/CMLibCommonTargetProperties.cmake index 2e64c79..514bfd3 100644 --- a/CMLibCommonTargetProperties.cmake +++ b/CMLibCommonTargetProperties.cmake @@ -1,9 +1,10 @@ set(COMMON_CXX_FEATURES cxx_alias_templates cxx_nullptr cxx_override) function(common_target_properties target) - get_target_property(__type ${target} TYPE) + get_target_property(_targetType ${target} TYPE) + set(__visibility PUBLIC) - if(__type STREQUAL INTERFACE_LIBRARY) + if(_targetType STREQUAL INTERFACE_LIBRARY) set(__interface 1) set(__visibility INTERFACE) endif() @@ -17,7 +18,6 @@ function(common_target_properties target) endforeach() target_compile_features(${target} ${__visibility} ${COMMON_CXX_FEATURES}) - get_target_property(_targetType ${target} TYPE) if(_targetType STREQUAL "EXECUTABLE") set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) @@ -25,13 +25,16 @@ function(common_target_properties target) target_compile_options(${target} PUBLIC "${CMAKE_CXX_COMPILE_OPTIONS_PIE}") endif() endif() + target_include_directories( ${target} PUBLIC $ $ $ $) + if(APPLE) target_compile_definitions(${target} ${__visibility} Darwin) endif() + if(NOT __interface) if(TARGET Qt5::Core) if(_targetType STREQUAL "EXECUTABLE") @@ -48,28 +51,27 @@ function(common_target_properties target) endif() endif() if(CMAKE_CXX_COMPILER_IS_GCC AND NOT APPLE) - set_target_properties(${target} PROPERTIES LINK_FLAGS "-Wl,--no-as-needed") + set_property(TARGET ${target} APPEND PROPERTY LINK_FLAGS "-Wl,--no-as-needed") endif() endif() # LTO only for executables (not libraries) in Release build type - get_target_property(target_type ${target} TYPE) - if(target_type STREQUAL "EXECUTABLE" AND CMAKE_BUILD_TYPE STREQUAL "Release") + if(_targetType STREQUAL "EXECUTABLE" AND CMAKE_BUILD_TYPE STREQUAL "Release") check_cxx_compiler_flag(-flto CXX_HAS_LTO_FLAG) check_cxx_compiler_flag(-fno-fat-lto-objects CXX_HAS_NO_FAT_LTO_FLAG) if(CXX_HAS_LTO_FLAG) - target_compile_options(${target} PUBLIC "$<$:-flto>") - set_target_properties(${target} PROPERTIES LINK_FLAGS_RELEASE "-flto") + target_compile_options(${target} PUBLIC "-flto") + set_property(TARGET ${target} APPEND PROPERTY LINK_FLAGS "-flto") if(CXX_HAS_NO_FAT_LTO_FLAG) - target_compile_options(${target} PUBLIC "$<$:-fno-fat-lto-objects>") - set_target_properties(${target} PROPERTIES LINK_FLAGS_RELEASE "-fno-fat-lto-objects") + target_compile_options(${target} PUBLIC "-fno-fat-lto-objects") + set_property(TARGET ${target} APPEND PROPERTY LINK_FLAGS "-fno-fat-lto-objects") endif() endif() endif() - set_target_properties(${target} PROPERTIES COTIRE_ENABLE_PRECOMPILED_HEADER - ${CMLIB_COTIRE_ENABLE_PRECOMPILED_HEADER}) - set_target_properties(${target} PROPERTIES COTIRE_ADD_UNITY_BUILD ${CMLIB_COTIRE_ADD_UNITY_BUILD}) + set_property(TARGET ${target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER + ${CMLIB_COTIRE_ENABLE_PRECOMPILED_HEADER}) + set_property(TARGET ${target} PROPERTY COTIRE_ADD_UNITY_BUILD ${CMLIB_COTIRE_ADD_UNITY_BUILD}) if(CMAKE_BUILD_TYPE STREQUAL Profile) target_compile_definitions(${target} ${__visibility} PROFILE)