Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions cmake/pcl_targets.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -585,6 +585,15 @@ function(PCL_MAKE_PKGCONFIG _name)
string(APPEND PKG_INTERNAL_DEPS " -l${_dep}")
endforeach()

if(IS_ABSOLUTE "${PKGCFG_INSTALL_DIR}")
set(PKGCONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}")
else()
file(RELATIVE_PATH _pkgconfig_to_prefix
"${CMAKE_INSTALL_PREFIX}/${PKGCFG_INSTALL_DIR}"
"${CMAKE_INSTALL_PREFIX}")
set(PKGCONFIG_PREFIX "\${pcfiledir}/${_pkgconfig_to_prefix}")
endif()

set(_pc_file ${CMAKE_CURRENT_BINARY_DIR}/${_name}.pc)
if(ARGS_HEADER_ONLY)
configure_file(${PROJECT_SOURCE_DIR}/cmake/pkgconfig-headeronly.cmake.in ${_pc_file} @ONLY)
Expand Down
2 changes: 1 addition & 1 deletion cmake/pkgconfig-headeronly.cmake.in
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated by CMake for @PROJECT_NAME@ library @PKG_NAME@
prefix=@CMAKE_INSTALL_PREFIX@
prefix=@PKGCONFIG_PREFIX@
exec_prefix=${prefix}
libdir=${prefix}/@LIB_INSTALL_DIR@
#includedir=${prefix}/@INCLUDE_INSTALL_DIR@
Expand Down
2 changes: 1 addition & 1 deletion cmake/pkgconfig.cmake.in
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated by CMake for @PROJECT_NAME@ library @PKG_NAME@
prefix=@CMAKE_INSTALL_PREFIX@
prefix=@PKGCONFIG_PREFIX@
exec_prefix=${prefix}
libdir=${prefix}/@LIB_INSTALL_DIR@
#includedir=${prefix}/@INCLUDE_INSTALL_DIR@
Expand Down
7 changes: 7 additions & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@ target_include_directories(pcl_gtest PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

enable_testing()

add_test(NAME pcl_pkgconfig_prefix
COMMAND ${CMAKE_COMMAND}
"-DPCL_BINARY_DIR=${PCL_BINARY_DIR}"
"-DPKGCFG_INSTALL_DIR=${PKGCFG_INSTALL_DIR}"
"-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
-P "${PCL_SOURCE_DIR}/test/cmake/test_pkgconfig_prefix.cmake")

# VS needs -C config to run correct
if(MSVC)
set(PCL_CTEST_ARGUMENTS ${PCL_CTEST_ARGUMENTS} -C $<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>)
Expand Down
23 changes: 23 additions & 0 deletions test/cmake/test_pkgconfig_prefix.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
if(IS_ABSOLUTE "${PKGCFG_INSTALL_DIR}")
set(expected_prefix "prefix=${CMAKE_INSTALL_PREFIX}")
else()
file(RELATIVE_PATH pkgconfig_to_prefix
"${CMAKE_INSTALL_PREFIX}/${PKGCFG_INSTALL_DIR}"
"${CMAKE_INSTALL_PREFIX}")
set(expected_prefix "prefix=\${pcfiledir}/${pkgconfig_to_prefix}")
endif()

file(GLOB_RECURSE pkgconfig_files "${PCL_BINARY_DIR}/pcl_*.pc")
if(NOT pkgconfig_files)
message(FATAL_ERROR "No generated PCL pkg-config files found")
endif()

foreach(pkgconfig_file IN LISTS pkgconfig_files)
file(STRINGS "${pkgconfig_file}" prefix_line REGEX "^prefix=")
if(NOT prefix_line STREQUAL expected_prefix)
message(FATAL_ERROR
"Unexpected prefix in ${pkgconfig_file}:\n"
" expected: ${expected_prefix}\n"
" actual: ${prefix_line}")
endif()
endforeach()