From d72ad4df929bc9d0882298fc1f85ecf589456ff6 Mon Sep 17 00:00:00 2001 From: Daniel Lundberg Pedersen Date: Thu, 23 Jan 2025 11:48:16 +0100 Subject: [PATCH] CMakeLists.txt: Add support for pkg-config Create and install pkg-config (.pc) file for dependency detection. --- CMakeLists.txt | 24 ++++++++++++++++++++++++ pybind11_json.pc.in | 7 +++++++ 2 files changed, 31 insertions(+) create mode 100644 pybind11_json.pc.in diff --git a/CMakeLists.txt b/CMakeLists.txt index c0ef675..a92240a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,3 +133,27 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}Config.cmake install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${PYBIND11_JSON_CMAKECONFIG_INSTALL_DIR}) + +# pkg-config support +if(NOT prefix_for_pc_file) +if(IS_ABSOLUTE "${CMAKE_INSTALL_DATAROOTDIR}") + set(prefix_for_pc_file "${CMAKE_INSTALL_PREFIX}") +else() + set(pc_datarootdir "${CMAKE_INSTALL_DATAROOTDIR}") + if(CMAKE_VERSION VERSION_LESS 3.20) + set(prefix_for_pc_file "\${pcfiledir}/..") + while(pc_datarootdir) + get_filename_component(pc_datarootdir "${pc_datarootdir}" DIRECTORY) + string(APPEND prefix_for_pc_file "/..") + endwhile() + else() + cmake_path(RELATIVE_PATH CMAKE_INSTALL_PREFIX BASE_DIRECTORY CMAKE_INSTALL_DATAROOTDIR + OUTPUT_VARIABLE prefix_for_pc_file) + endif() +endif() +endif() +set(includedir_for_pc_file "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pybind11_json.pc.in" + "${CMAKE_CURRENT_BINARY_DIR}/pybind11_json.pc" @ONLY) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pybind11_json.pc" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig/") diff --git a/pybind11_json.pc.in b/pybind11_json.pc.in new file mode 100644 index 0000000..da5bfde --- /dev/null +++ b/pybind11_json.pc.in @@ -0,0 +1,7 @@ +prefix=@prefix_for_pc_file@ +includedir=@includedir_for_pc_file@ + +Name: @PROJECT_NAME@ +Description: Using nlohmann::json with pybind11 +Version: @PROJECT_VERSION@ +Cflags: -I${includedir}