cmake: remove $<LINK_ONLY:...> expressions from INTERFACE_LINK_LIBRARIES
When torrent-rasterbar is built a static library, CMake supplies link dependencies inside the LINK_ONLY generator expressions. But pkg-config does not support such operational mode, and thus we can safely replace those expressions with the library names. Closes #3354.
This commit is contained in:
parent
3b32c90dde
commit
911e4a892b
|
@ -49,12 +49,15 @@ function(_get_target_property_merging_configs _var_name _target_name _propert_na
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
# HACK for static libraries cmake populates link dependencies as $<LINK_ONLY:lib_name>.
|
||||||
|
# pkg-config does not support special handling for static libraries and as such we will remove
|
||||||
|
# that generator expression
|
||||||
|
string(REPLACE "$<LINK_ONLY:" "$<1:" vals "${vals}")
|
||||||
# HACK file(GENERATE), which we use for expanding generator expressions, is BUILD_INTERFACE,
|
# HACK file(GENERATE), which we use for expanding generator expressions, is BUILD_INTERFACE,
|
||||||
# but we need INSTALL_INTERFACE here. As such, let us inter-change them.
|
# but we need INSTALL_INTERFACE here.
|
||||||
# See https://gitlab.kitware.com/cmake/cmake/issues/17984
|
# See https://gitlab.kitware.com/cmake/cmake/issues/17984
|
||||||
string(REPLACE "$<BUILD_INTERFACE:" "$<TMP_INTERFACE:" vals "${vals}")
|
string(REPLACE "$<BUILD_INTERFACE:" "$<0:" vals "${vals}")
|
||||||
string(REPLACE "$<INSTALL_INTERFACE:" "@CMAKE_INSTALL_PREFIX@/$<BUILD_INTERFACE:" vals "${vals}")
|
string(REPLACE "$<INSTALL_INTERFACE:" "@CMAKE_INSTALL_PREFIX@/$<1:" vals "${vals}")
|
||||||
string(REPLACE "$<TMP_INTERFACE:" "$<INSTALL_INTERFACE:" vals "${vals}")
|
|
||||||
set(${_var_name} "${vals}" PARENT_SCOPE)
|
set(${_var_name} "${vals}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue