From 3066c57697a2f83e32be243ce94bde9b36a0562b Mon Sep 17 00:00:00 2001 From: Pascal Palenda <pascal.palenda@akustik.rwth-aachen.de> Date: Tue, 2 May 2023 16:41:43 +0200 Subject: [PATCH] Improve linking of 3rd party libraries Adding the object files to the final library target did not transfer any linking information. As stated here: https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#object-libraries using `target_link_libraries` honors the usage requirements. --- src/IhtaAddLibrary.cmake | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/IhtaAddLibrary.cmake b/src/IhtaAddLibrary.cmake index e04af17..f45cb6c 100644 --- a/src/IhtaAddLibrary.cmake +++ b/src/IhtaAddLibrary.cmake @@ -184,7 +184,9 @@ macro (ihta_add_library) endif () # Add the actual library target - add_library (${IHTA_ADD_LIB_NAME} ${IHTA_ADD_LIB_LIBRARY_TYPE} $<TARGET_OBJECTS:${IHTA_ADD_LIB_TARGET}>) + add_library (${IHTA_ADD_LIB_NAME} ${IHTA_ADD_LIB_LIBRARY_TYPE} "") + target_link_libraries (${IHTA_ADD_LIB_NAME} PUBLIC ${IHTA_ADD_LIB_TARGET}) + add_library (${IHTA_ADD_LIB_NAMESPACE}::${IHTA_ADD_LIB_NAME} ALIAS ${IHTA_ADD_LIB_NAME}) # Include Directory @@ -201,6 +203,13 @@ macro (ihta_add_library) if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) set_property (TARGET ${IHTA_ADD_LIB_NAME} PROPERTY FOLDER ${IHTA_ADD_LIB_IDE_FOLDER}) endif () + + # install the object library so it's in the export set, see: + # https://gitlab.kitware.com/cmake/cmake/-/issues/18935 + install (TARGETS ${IHTA_ADD_LIB_TARGET} EXPORT ${IHTA_ADD_LIB_NAME}Targets # Adapt this in case package project + # is *not* used! + ) + else () set (IHTA_ADD_LIB_TARGET ${IHTA_ADD_LIB_NAME}) @@ -234,10 +243,12 @@ macro (ihta_add_library) ihta_add_test ( NAME ${IHTA_ADD_LIB_TEST_TARGET} IDE_FOLDER ${IHTA_ADD_LIB_IDE_FOLDER} - SOURCES ${IHTA_ADD_LIB_TEST_SOURCES} $<TARGET_OBJECTS:${IHTA_ADD_LIB_TARGET}> + SOURCES ${IHTA_ADD_LIB_TEST_SOURCES} COV_SOURCES ${IHTA_ADD_LIB_INCLUDE_DIR} ${IHTA_ADD_LIB_SRC_DIR} ) + target_link_libraries (${IHTA_ADD_LIB_TEST_TARGET} PUBLIC ${IHTA_ADD_LIB_TARGET}) + target_include_directories ( ${IHTA_ADD_LIB_TEST_TARGET} PUBLIC $<BUILD_INTERFACE:${IHTA_ADD_LIB_INCLUDE_DIR}> -- GitLab