From 017a747da650d81f3f92404ba6e4cb1e0edbaa05 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 7 Aug 2017 16:32:35 -0400 Subject: [PATCH] CMake: support a custom export group (#970) When Pybind11 is used via `add_subdirectory`, when targets are installed from the parent project, CMake wants all of the dependencies built by the project in the same export set. Projects may now set `PYBIND11_EXPORT_NAME` to have Pybind11 put it targets into the project's export set. If so, do not install Pybind11's export file. --- CMakeLists.txt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2179e3aa..cf22a846 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,9 @@ set(PYBIND11_MASTER_PROJECT OFF) if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) set(PYBIND11_MASTER_PROJECT ON) endif() +if (NOT PYBIND11_EXPORT_NAME) + set(PYBIND11_EXPORT_NAME "${PROJECT_NAME}Targets") +endif () option(PYBIND11_INSTALL "Install pybind11 header files?" ${PYBIND11_MASTER_PROJECT}) option(PYBIND11_TEST "Build pybind11 test suite?" ${PYBIND11_MASTER_PROJECT}) @@ -131,9 +134,11 @@ if (PYBIND11_INSTALL) if(NOT (CMAKE_VERSION VERSION_LESS 3.0)) install(TARGETS pybind11 module embed - EXPORT "${PROJECT_NAME}Targets") - install(EXPORT "${PROJECT_NAME}Targets" - NAMESPACE "${PROJECT_NAME}::" - DESTINATION ${PYBIND11_CMAKECONFIG_INSTALL_DIR}) + EXPORT "${PYBIND11_EXPORT_NAME}") + if(PYBIND11_MASTER_PROJECT) + install(EXPORT "${PYBIND11_EXPORT_NAME}" + NAMESPACE "${PROJECT_NAME}::" + DESTINATION ${PYBIND11_CMAKECONFIG_INSTALL_DIR}) + endif() endif() endif()