diff --git a/src/IhtaAddLibrary.cmake b/src/IhtaAddLibrary.cmake index 46197f70cacd0dbd0631c0b92e2a44ebec0c441a..b00bcb3560ffca130790e0a2c5a077011471749e 100644 --- a/src/IhtaAddLibrary.cmake +++ b/src/IhtaAddLibrary.cmake @@ -70,7 +70,38 @@ macro (ihta_add_library) endif () if (IHTA_ADD_LIB_TEST_INPLACE OR IHTA_ADD_LIB_TEST_INTERNALS) - # todo + set (IHTA_ADD_LIB_TARGET ${IHTA_ADD_LIB_NAME}${IHTA_ADD_LIB_OBJECT_LIB_POSTFIX}) + + # Create an object library + add_library (${IHTA_ADD_LIB_TARGET} OBJECT "") + + target_sources (${IHTA_ADD_LIB_TARGET} PRIVATE ${IHTA_ADD_LIB_SOURCES}) + + # Add compile definition for the export header generated by cmake's generate_export_header. For example used in packageProject. + if (${IHTA_ADD_LIB_LIBRARY_TYPE} MATCHES "STATIC") + target_compile_definitions (${IHTA_ADD_LIB_TARGET} PUBLIC ${IHTA_ADD_LIB_NAME}_STATIC_DEFINE) + else () + target_compile_definitions (${IHTA_ADD_LIB_TARGET} PUBLIC ${IHTA_ADD_LIB_NAME}_EXPORTS) + 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_NAMESPACE}::${IHTA_ADD_LIB_NAME} ALIAS ${IHTA_ADD_LIB_NAME}) + + # Include Directory + target_include_directories ( + ${IHTA_ADD_LIB_NAME} + PUBLIC $<BUILD_INTERFACE:${IHTA_ADD_LIB_INCLUDE_DIR}> + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${IHTA_ADD_LIB_INSTALL_INCLUDE_DIR}> + ) + + # Required compiler features + target_compile_features (${IHTA_ADD_LIB_NAME} PUBLIC cxx_std_17) + + # If build out of parent project, add parent folder library to parent project folder + 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 () else () set (IHTA_ADD_LIB_TARGET ${IHTA_ADD_LIB_NAME})