diff --git a/ament_cmake_core/cmake/core/templates/nameConfig.cmake.in b/ament_cmake_core/cmake/core/templates/nameConfig.cmake.in index 6fb3fe78..5ce5db80 100644 --- a/ament_cmake_core/cmake/core/templates/nameConfig.cmake.in +++ b/ament_cmake_core/cmake/core/templates/nameConfig.cmake.in @@ -35,6 +35,18 @@ endif() # flag package as ament-based to distinguish it after being find_package()-ed set(@PROJECT_NAME@_FOUND_AMENT_PACKAGE TRUE) +# Compute relocatable install prefix. This is pretty much the same code as it +# is generated by the CMakePackageConfigHelpers module. +get_filename_component(AMENT_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) +# Use original install prefix if the package was merely found via symlink alias +get_filename_component(_realCurr "${CMAKE_CURRENT_LIST_DIR}" REALPATH) +get_filename_component(_realOrig "@CMAKE_INSTALL_PREFIX@/share/@PROJECT_NAME@/cmake" REALPATH) +if(_realCurr STREQUAL _realOrig) + set(AMENT_IMPORT_PREFIX "@CMAKE_INSTALL_PREFIX@") +endif() +unset(_realCurr) +unset(_realOrig) + # include all config extra files set(_extras "@PACKAGE_CONFIG_EXTRA_FILES@") foreach(_extra ${_extras}) diff --git a/ament_cmake_export_include_directories/cmake/ament_export_include_directories.cmake b/ament_cmake_export_include_directories/cmake/ament_export_include_directories.cmake index 9d211628..ffe7b2e1 100644 --- a/ament_cmake_export_include_directories/cmake/ament_export_include_directories.cmake +++ b/ament_cmake_export_include_directories/cmake/ament_export_include_directories.cmake @@ -37,7 +37,7 @@ macro(ament_export_include_directories) if(NOT IS_ABSOLUTE "${_arg}") # prefix relative paths with CMAKE_INSTALL_PREFIX # while avoiding to embed any absolute path - set(_arg "\${${PROJECT_NAME}_DIR}/../../../${_arg}") + set(_arg "\${AMENT_IMPORT_PREFIX}/${_arg}") list_append_unique(_AMENT_EXPORT_RELATIVE_INCLUDE_DIRECTORIES "${_arg}") else() if(NOT IS_DIRECTORY "${_arg}") diff --git a/ament_cmake_export_libraries/cmake/ament_cmake_export_libraries-extras.cmake.in b/ament_cmake_export_libraries/cmake/ament_cmake_export_libraries-extras.cmake.in index bd47853f..20633190 100644 --- a/ament_cmake_export_libraries/cmake/ament_cmake_export_libraries-extras.cmake.in +++ b/ament_cmake_export_libraries/cmake/ament_cmake_export_libraries-extras.cmake.in @@ -39,7 +39,7 @@ if(NOT _exported_libraries STREQUAL "") set(_lib "NOTFOUND") find_library( _lib NAMES "${_library}" - PATHS "${@PROJECT_NAME@_DIR}/../../../lib" + PATHS "${AMENT_IMPORT_PREFIX}/lib" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH )