From 942c14ce3d4dea25ad1c4efd8d07979176d77236 Mon Sep 17 00:00:00 2001 From: Martchus Date: Tue, 11 Jul 2017 22:02:27 +0200 Subject: [PATCH] Fix target include dirs * Add include path of own header files for build and external use via imported target. Previously only include dirs required for external libs were added. * Using global include dirs is no longer required. * When PUBLIC_SHARED_INCLUDE_DIRS is empty, adding "${PUBLIC_SHARED_INCLUDE_DIRS}" to public include dirs does not leave INTERFACE_INCLUDE_DIRECTORIES property empty. Instead the source dir is added. So just don't use quotes here. --- cmake/modules/AppTarget.cmake | 8 ++++++-- cmake/modules/LibraryTarget.cmake | 26 ++++++++++++++++++++------ cmake/modules/TestTarget.cmake | 16 ++++++++++++++-- cmake/templates/Config.cmake.in | 2 -- 4 files changed, 40 insertions(+), 12 deletions(-) diff --git a/cmake/modules/AppTarget.cmake b/cmake/modules/AppTarget.cmake index 30d8dfb..7571ece 100644 --- a/cmake/modules/AppTarget.cmake +++ b/cmake/modules/AppTarget.cmake @@ -43,8 +43,12 @@ target_link_libraries(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} PRIVATE "${PRIVATE_LIBRARIES}" ) target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} - PUBLIC "${PUBLIC_SHARED_INCLUDE_DIRS}" - PRIVATE "${PRIVATE_SHARED_INCLUDE_DIRS}" + PUBLIC + $ + $ + ${PUBLIC_SHARED_INCLUDE_DIRS} + PRIVATE + "${PRIVATE_SHARED_INCLUDE_DIRS}" ) target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} PUBLIC "${META_PUBLIC_SHARED_LIB_COMPILE_DEFINITIONS}" diff --git a/cmake/modules/LibraryTarget.cmake b/cmake/modules/LibraryTarget.cmake index 5036f8c..2478a87 100644 --- a/cmake/modules/LibraryTarget.cmake +++ b/cmake/modules/LibraryTarget.cmake @@ -125,7 +125,10 @@ if(BUILD_SHARED_LIBS) INTERFACE ${ACTUAL_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}" "${PRIVATE_LIBRARIES}" ) target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} - INTERFACE "${PUBLIC_SHARED_INCLUDE_DIRS}" "${PRIVATE_SHARED_INCLUDE_DIRS}" + INTERFACE + $ + $ + ${PUBLIC_SHARED_INCLUDE_DIRS} ) target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} INTERFACE "${META_PUBLIC_SHARED_LIB_COMPILE_DEFINITIONS}" "${META_PRIVATE_SHARED_LIB_COMPILE_DEFINITIONS}" @@ -140,8 +143,12 @@ if(BUILD_SHARED_LIBS) PRIVATE "${PRIVATE_LIBRARIES}" ) target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} - PUBLIC "${PUBLIC_SHARED_INCLUDE_DIRS}" - PRIVATE "${PRIVATE_SHARED_INCLUDE_DIRS}" + PUBLIC + $ + $ + ${PUBLIC_SHARED_INCLUDE_DIRS} + PRIVATE + "${PRIVATE_SHARED_INCLUDE_DIRS}" ) target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX} PUBLIC "${META_PUBLIC_SHARED_LIB_COMPILE_DEFINITIONS}" @@ -176,7 +183,10 @@ if(BUILD_STATIC_LIBS) INTERFACE ${ACTUAL_ADDITIONAL_LINK_FLAGS} "${PUBLIC_STATIC_LIBRARIES}" "${PRIVATE_STATIC_LIBRARIES}" ) target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static - INTERFACE "${PUBLIC_STATIC_INCLUDE_DIRS}" "${PRIVATE_STATIC_INCLUDE_DIRS}" + INTERFACE + $ + $ + ${PUBLIC_STATIC_INCLUDE_DIRS} ) target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static INTERFACE "${META_PUBLIC_STATIC_LIB_COMPILE_DEFINITIONS}" "${META_PRIVATE_STATIC_LIB_COMPILE_DEFINITIONS}" @@ -191,8 +201,12 @@ if(BUILD_STATIC_LIBS) PRIVATE "${PRIVATE_STATIC_LIBRARIES}" ) target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static - PUBLIC "${PUBLIC_STATIC_INCLUDE_DIRS}" - PRIVATE "${PRIVATE_STATIC_INCLUDE_DIRS}" + PUBLIC + $ + $ + ${PUBLIC_STATIC_INCLUDE_DIRS} + PRIVATE + "${PRIVATE_STATIC_INCLUDE_DIRS}" ) target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_static PUBLIC "${META_PUBLIC_STATIC_LIB_COMPILE_DEFINITIONS}" diff --git a/cmake/modules/TestTarget.cmake b/cmake/modules/TestTarget.cmake index 571f085..62af7b5 100644 --- a/cmake/modules/TestTarget.cmake +++ b/cmake/modules/TestTarget.cmake @@ -74,6 +74,14 @@ if(CPP_UNIT_LIB OR META_NO_CPP_UNIT) PUBLIC ${ACTUAL_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES}" PRIVATE "${PRIVATE_LIBRARIES}" ) + target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib + PUBLIC + $ + $ + ${PUBLIC_SHARED_INCLUDE_DIRS} + PRIVATE + "${PRIVATE_SHARED_INCLUDE_DIRS}" + ) target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_testlib PUBLIC "${META_PUBLIC_SHARED_LIB_COMPILE_DEFINITIONS}" PRIVATE "${META_PRIVATE_SHARED_LIB_COMPILE_DEFINITIONS}" @@ -109,8 +117,12 @@ if(CPP_UNIT_LIB OR META_NO_CPP_UNIT) PRIVATE "${TEST_LIBRARIES}" "${PRIVATE_LIBRARIES}" ) target_include_directories(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests - PUBLIC "${PUBLIC_SHARED_INCLUDE_DIRS}" - PRIVATE "${PRIVATE_SHARED_INCLUDE_DIRS}" + PUBLIC + $ + $ + ${PUBLIC_SHARED_INCLUDE_DIRS} + PRIVATE + "${PRIVATE_SHARED_INCLUDE_DIRS}" ) target_compile_definitions(${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests PUBLIC "${META_PUBLIC_SHARED_LIB_COMPILE_DEFINITIONS}" diff --git a/cmake/templates/Config.cmake.in b/cmake/templates/Config.cmake.in index 510923d..352912b 100644 --- a/cmake/templates/Config.cmake.in +++ b/cmake/templates/Config.cmake.in @@ -63,8 +63,6 @@ endif() macro(use_@META_PROJECT_VARNAME@) # make CMake modules of the project available list(APPEND CMAKE_MODULE_PATH ${@META_PROJECT_VARNAME_UPPER@_MODULE_DIRS}) - # add include directories - include_directories(BEFORE SYSTEM ${@META_PROJECT_VARNAME_UPPER@_INCLUDE_DIRS}) # link against library (also "link" against header-only libs to get compile defs and interface link libs) link_directories(${@META_PROJECT_VARNAME_UPPER@_LIB_DIR}) include(3rdParty)