You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.5 KiB
61 lines
2.5 KiB
#### From carl.
|
|
|
|
function(_export_target_add_lib output TARGET TYPE)
|
|
set(${output} "${${output}}
|
|
|
|
add_library(${TARGET} ${TYPE} IMPORTED)" PARENT_SCOPE)
|
|
endfunction(_export_target_add_lib)
|
|
function(_export_target_start output TARGET)
|
|
set(${output} "${${output}}
|
|
|
|
if(NOT TARGET ${TARGET})" PARENT_SCOPE)
|
|
endfunction(_export_target_start)
|
|
function(_export_target_end output)
|
|
set(${output} "${${output}}
|
|
endif()" PARENT_SCOPE)
|
|
endfunction(_export_target_end)
|
|
|
|
macro(_export_target_set_prop output TARGET REQUIRED PROPERTY)
|
|
get_target_property(VALUE ${TARGET} ${PROPERTY})
|
|
set(extra_args ${ARGN})
|
|
list(GET extra_args 0 NEWPROPERTY)
|
|
if(NOT NEWPROPERTY)
|
|
set(NEWPROPERTY ${PROPERTY})
|
|
endif()
|
|
if(VALUE)
|
|
set(${output} "${${output}}
|
|
set_target_properties(${TARGET} PROPERTIES ${NEWPROPERTY} \"${VALUE}\")")
|
|
elseif(${REQUIRED})
|
|
message(STATUS "Did not find ${PROPERTY} of ${TARGET} for export.")
|
|
endif()
|
|
endmacro(_export_target_set_prop)
|
|
|
|
macro(export_target output TARGET)
|
|
get_target_property(TYPE ${TARGET} TYPE)
|
|
_export_target_start(${output} ${TARGET})
|
|
if(TYPE STREQUAL "SHARED_LIBRARY")
|
|
_export_target_add_lib(${output} ${TARGET} SHARED)
|
|
_export_target_set_prop(${output} ${TARGET} TRUE IMPORTED_LOCATION)
|
|
_export_target_set_prop(${output} ${TARGET} FALSE INTERFACE_INCLUDE_DIRECTORIES)
|
|
_export_target_set_prop(${output} ${TARGET} FALSE LINK_INTERFACE_LIBRARIES)
|
|
elseif(TYPE STREQUAL "STATIC_LIBRARY")
|
|
_export_target_add_lib(${output} ${TARGET} STATIC)
|
|
_export_target_set_prop(${output} ${TARGET} TRUE IMPORTED_LOCATION)
|
|
_export_target_set_prop(${output} ${TARGET} FALSE INTERFACE_INCLUDE_DIRECTORIES)
|
|
_export_target_set_prop(${output} ${TARGET} FALSE LINK_INTERFACE_LIBRARIES IMPORTED_LINK_INTERFACE_LIBRARIES)
|
|
elseif(TYPE STREQUAL "INTERFACE_LIBRARY")
|
|
_export_target_add_lib(${output} ${TARGET} INTERFACE)
|
|
_export_target_set_prop(${output} ${TARGET} TRUE INTERFACE_INCLUDE_DIRECTORIES)
|
|
_export_target_set_prop(${output} ${TARGET} FALSE INTERFACE_LINK_LIBRARIES)
|
|
else()
|
|
message(STATUS "Unknown type ${TYPE}")
|
|
endif()
|
|
if(NOT "${ARGN}" STREQUAL "")
|
|
set(deps ${ARGN})
|
|
foreach(d ${deps})
|
|
set(${output} "${${output}}
|
|
set_target_properties(${TARGET} PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES \"${d}\")")
|
|
endforeach()
|
|
endif()
|
|
_export_target_end(${output})
|
|
endmacro(export_target)
|