Fix ros/catkin#694 by modifying rosbuild to strip leading -l: from libraries.

This commit is contained in:
Brian Gerkey 2015-07-13 18:46:58 -07:00
parent bd49938705
commit 6337686005
1 changed files with 19 additions and 0 deletions

View File

@ -258,6 +258,25 @@ macro(rosbuild_init)
list(REVERSE ${_prefix}_LIBRARIES)
endif()
# Strip the leading ':' from any library that was given to us as
# ':/path/to/lib'. Those kinds of libraries generally come from
# catkin-generated .pc files that are parsed by rospack via pkg-config.
# Newer versions of ld (and gold) don't accept the '-l:/path/to/lib'
# syntax. They've long accepted the '/path/to/lib' syntax, so it
# should be safe to just strip the ':' here. We could remove it at
# the source, from the .pc file, but the lib argument needs to start
# with '-l' to ensure proper ordering of libs in the return from
# pkg-config.
# https://github.com/ros/catkin/issues/694
if(${_prefix}_LIBRARIES)
set(_${_prefix}_LIBRARIES ${${_prefix}_LIBRARIES})
set(${_prefix}_LIBRARIES "")
foreach(_lib ${_${_prefix}_LIBRARIES})
string(REGEX REPLACE "^:/" "/" _lib_nocolon ${_lib})
list(APPEND ${_prefix}_LIBRARIES ${_lib_nocolon})
endforeach(_lib)
endif()
# Also throw in the libs that we want to link everything against (only
# use case for this so far is -lgcov when building with code coverage
# support).