Skip to content

Commit 4936c97

Browse files
committed
Fix assumption that CMAKE_INSTALL_*DIR paths are relative.
This solution uses relative paths if possible, allowing the package to be relocatable, but still works correctly if CMAKE_INSTALL_*DIR paths are absolute. Signed-off-by: Ben Wolsieffer <benwolsieffer@gmail.com>
1 parent 424643d commit 4936c97

3 files changed

Lines changed: 9 additions & 3 deletions

File tree

CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,14 @@ if(WIN32 AND NOT CYGWIN)
3333
else()
3434
set(CMAKE_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake)
3535
endif()
36-
string(REGEX REPLACE "[^/]+" ".." RELATIVE_PATH_CMAKE_DIR_TO_PREFIX "${CMAKE_CONFIG_INSTALL_DIR}")
36+
file(RELATIVE_PATH RELATIVE_PATH_CMAKE_DIR_TO_PREFIX "${CMAKE_CONFIG_INSTALL_DIR}" "${CMAKE_INSTALL_PREFIX}")
3737

3838
set(PACKAGE_NAME ${PROJECT_NAME})
39+
string(REPLACE
40+
"${CMAKE_INSTALL_PREFIX}"
41+
"\${${PROJECT_NAME}_DIR}/${RELATIVE_PATH_CMAKE_DIR_TO_PREFIX}"
42+
cmake_conf_include_dir
43+
"${CMAKE_INSTALL_FULL_INCLUDEDIR}")
3944
set(cmake_conf_file "${PROJECT_NAME}-config.cmake")
4045
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/${cmake_conf_file}.in" "${CMAKE_BINARY_DIR}/${cmake_conf_file}" @ONLY)
4146
set(cmake_conf_version_file "${PROJECT_NAME}-config-version.cmake")
@@ -55,6 +60,7 @@ install(FILES
5560

5661
# Make the package config file
5762
set(PACKAGE_DESC "Unified Robot Description Format")
63+
string(REPLACE "${CMAKE_INSTALL_PREFIX}" "\${prefix}" pkg_conf_includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
5864
set(pkg_conf_file "urdfdom_headers.pc")
5965
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/pkgconfig/${pkg_conf_file}.in" "${CMAKE_BINARY_DIR}/${pkg_conf_file}" @ONLY)
6066
install(FILES "${CMAKE_BINARY_DIR}/${pkg_conf_file}" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/ COMPONENT pkgconfig)

cmake/pkgconfig/urdfdom_headers.pc.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# This file was generated by CMake for @PROJECT_NAME@
22
prefix=@CMAKE_INSTALL_PREFIX@
33
exec_prefix=${prefix}
4-
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
4+
includedir=@pkg_conf_includedir@
55

66
Name: @PACKAGE_NAME@
77
Description: @PACKAGE_DESC@

cmake/urdfdom_headers-config.cmake.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ if (@PACKAGE_NAME@_CONFIG_INCLUDED)
33
endif()
44
set(@PACKAGE_NAME@_CONFIG_INCLUDED TRUE)
55

6-
set(@PACKAGE_NAME@_INCLUDE_DIRS "${@PROJECT_NAME@_DIR}/@RELATIVE_PATH_CMAKE_DIR_TO_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@")
6+
set(@PACKAGE_NAME@_INCLUDE_DIRS "@cmake_conf_include_dir@")
77

88
include("${@PACKAGE_NAME@_DIR}/@PACKAGE_NAME@Export.cmake")
99

0 commit comments

Comments
 (0)