39 lines
1.3 KiB
CMake
39 lines
1.3 KiB
CMake
set(COMMON_CXX_FEATURES
|
|
cxx_alias_templates cxx_nullptr cxx_override)
|
|
|
|
function(common_target_properties Name)
|
|
get_target_property(__type ${Name} TYPE)
|
|
set(__visibility PUBLIC)
|
|
if(__type STREQUAL INTERFACE_LIBRARY)
|
|
set(__interface 1)
|
|
set(__visibility INTERFACE)
|
|
endif()
|
|
target_compile_features(${Name} ${__visibility} ${COMMON_CXX_FEATURES})
|
|
target_include_directories(${Name} PUBLIC
|
|
$<INSTALL_INTERFACE:include>
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
|
|
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
|
|
if(APPLE)
|
|
target_compile_definitions(${Name} ${__visibility} Darwin)
|
|
endif()
|
|
if(NOT __interface)
|
|
if(TARGET Qt5::Core)
|
|
target_compile_options(${Name} PUBLIC "${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
|
|
set_target_properties(${Name} PROPERTIES AUTOMOC TRUE AUTORCC TRUE)
|
|
endif()
|
|
if(TARGET Qt5::Widgets)
|
|
set_target_properties(${Name} PROPERTIES AUTOUIC TRUE)
|
|
if (CMAKE_VERSION VERSION_LESS 3.7.99)
|
|
target_include_directories(${Name} PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}_autogen/include>)
|
|
endif()
|
|
endif()
|
|
if(CMAKE_CXX_COMPILER_IS_GCC AND NOT APPLE)
|
|
set_target_properties(${Name} PROPERTIES LINK_FLAGS "-Wl,--no-as-needed")
|
|
endif()
|
|
endif()
|
|
|
|
endfunction()
|
|
|