# copied from CARL macro(add_imported_library_interface name include) add_library(${name} INTERFACE IMPORTED) set_target_properties(${name} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${include}") endmacro(add_imported_library_interface) macro(add_imported_library name type lib include) # Workaround from https://cmake.org/Bug/view.php?id=15052 file(MAKE_DIRECTORY "${include}") if("${lib}" STREQUAL "") if("${type}" STREQUAL "SHARED") add_library(${name} INTERFACE IMPORTED) set_target_properties(${name} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${include}") endif() else() add_library(${name}_${type} ${type} IMPORTED) set_target_properties(${name}_${type} PROPERTIES IMPORTED_LOCATION "${lib}") set_target_properties(${name}_${type} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${include}") endif() endmacro(add_imported_library) macro(export_option name) list(APPEND EXPORTED_OPTIONS "${name}") endmacro(export_option) macro(export_target output TARGET) get_target_property(TYPE ${TARGET} TYPE) if(TYPE STREQUAL "SHARED_LIBRARY") get_target_property(LOCATION ${TARGET} IMPORTED_LOCATION) get_target_property(INCLUDE ${TARGET} INTERFACE_INCLUDE_DIRECTORIES) set(${output} "${${output}} add_library(${TARGET} SHARED IMPORTED) set_target_properties(${TARGET} PROPERTIES IMPORTED_LOCATION \"${LOCATION}\") set_target_properties(${TARGET} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES \"${INCLUDE}\") ") elseif(TYPE STREQUAL "STATIC_LIBRARY") get_target_property(LOCATION ${TARGET} IMPORTED_LOCATION) get_target_property(INCLUDE ${TARGET} INTERFACE_INCLUDE_DIRECTORIES) set(${output} "${${output}} add_library(${TARGET} STATIC IMPORTED) set_target_properties(${TARGET} PROPERTIES IMPORTED_LOCATION \"${LOCATION}\") set_target_properties(${TARGET} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES \"${INCLUDE}\") ") if(NOT "${ARGN}" STREQUAL "") set(${output} "${${output}}set_target_properties(${TARGET} PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES \"${ARGN}\") ") endif() elseif(TYPE STREQUAL "INTERFACE_LIBRARY") get_target_property(INCLUDE ${TARGET} INTERFACE_INCLUDE_DIRECTORIES) set(${output} "${${output}} add_library(${TARGET} INTERFACE IMPORTED) set_target_properties(${TARGET} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES \"${INCLUDE}\") ") else() message(STATUS "Unknown type ${TYPE}") endif() endmacro(export_target)