forked from pybind/pybind11
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add CMake exported interface library and Config detection file
- Loading branch information
Showing
5 changed files
with
191 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,3 +33,5 @@ MANIFEST | |
/cmake/ | ||
.cache/ | ||
sosize-*.txt | ||
pybind11Config*.cmake | ||
pybind11Targets.cmake |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
# pybind11Config.cmake | ||
# -------------------- | ||
# | ||
# PYBIND11 cmake module. | ||
# This module sets the following variables in your project:: | ||
# | ||
# pybind11_FOUND - true if pybind11 and all required components found on the system | ||
# pybind11_VERSION - pybind11 version in format Major.Minor.Release | ||
# pybind11_INCLUDE_DIRS - Directories where pybind11 and python headers are located. | ||
# pybind11_INCLUDE_DIR - Directory where pybind11 headers are located. | ||
# pybind11_DEFINITIONS - Definitions necessary to use pybind11, namely USING_pybind11. | ||
# pybind11_LIBRARIES - compile flags and python libraries (as needed) to link against. | ||
# pybind11_LIBRARY - empty. | ||
# CMAKE_MODULE_PATH - appends location of accompanying FindPythonLibsNew.cmake and | ||
# pybind11Tools.cmake modules. | ||
# | ||
# | ||
# Available components: None | ||
# | ||
# | ||
# Exported targets:: | ||
# | ||
# If pybind11 is found, this module defines the following :prop_tgt:`IMPORTED` | ||
# target. Python headers, libraries (as needed by platform), and C++ standard | ||
# are attached to the target. Set PythonLibsNew variables to influence | ||
# python detection and PYBIND11_CPP_STANDARD (-std=c++11 or -std=c++14) to | ||
# influence standard setting. :: | ||
# | ||
# pybind11::pybind11 - the main pybind11 interface library (i.e., headers) | ||
# | ||
# find_package(pybind11 CONFIG REQUIRED) | ||
# message(STATUS "Found pybind11: ${pybind11_INCLUDE_DIR} (found version ${pybind11_VERSION} & Py${PYTHON_VERSION_STRING})") | ||
# add_library(mylib MODULE main.cpp) | ||
# target_link_libraries(mylib pybind11::pybind11) | ||
# | ||
# Suggested usage:: | ||
# | ||
# find_package with version info is not recommended except for release versions. :: | ||
# | ||
# find_package(pybind11 CONFIG) | ||
# find_package(pybind11 2.0 EXACT CONFIG REQUIRED) | ||
# | ||
# | ||
# The following variables can be set to guide the search for this package:: | ||
# | ||
# pybind11_DIR - CMake variable, set to directory containing this Config file | ||
# CMAKE_PREFIX_PATH - CMake variable, set to root directory of this package | ||
# PATH - environment variable, set to bin directory of this package | ||
# CMAKE_DISABLE_FIND_PACKAGE_pybind11 - CMake variable, disables | ||
# find_package(pybind11) when not REQUIRED, perhaps to force internal build | ||
|
||
@PACKAGE_INIT@ | ||
|
||
set(PN pybind11) | ||
|
||
# location of pybind11/pybind11.h | ||
set(${PN}_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@") | ||
|
||
set(${PN}_LIBRARY "") | ||
set(${PN}_DEFINITIONS USING_${PN}) | ||
|
||
check_required_components(${PN}) | ||
|
||
# make detectable the FindPythonLibsNew.cmake module | ||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) | ||
|
||
include(pybind11Tools) | ||
|
||
if(NOT (CMAKE_VERSION VERSION_LESS 3.0)) | ||
#----------------------------------------------------------------------------- | ||
# Don't include targets if this file is being picked up by another | ||
# project which has already built this as a subproject | ||
#----------------------------------------------------------------------------- | ||
if(NOT TARGET ${PN}::pybind11) | ||
include("${CMAKE_CURRENT_LIST_DIR}/${PN}Targets.cmake") | ||
|
||
find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} MODULE REQUIRED) | ||
set_property(TARGET ${PN}::pybind11 APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PYTHON_INCLUDE_DIRS}) | ||
if(WIN32 OR CYGWIN) | ||
set_property(TARGET ${PN}::pybind11 APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${PYTHON_LIBRARIES}) | ||
endif() | ||
|
||
select_cxx_standard() | ||
set_property(TARGET ${PN}::pybind11 APPEND PROPERTY INTERFACE_COMPILE_OPTIONS "${PYBIND11_CPP_STANDARD}") | ||
|
||
get_property(_iid TARGET ${PN}::pybind11 PROPERTY INTERFACE_INCLUDE_DIRECTORIES) | ||
get_property(_ill TARGET ${PN}::pybind11 PROPERTY INTERFACE_LINK_LIBRARIES) | ||
get_property(_ico TARGET ${PN}::pybind11 PROPERTY INTERFACE_COMPILE_OPTIONS) | ||
set(${PN}_INCLUDE_DIRS ${_iid}) | ||
set(${PN}_LIBRARIES ${_ico} ${_ill}) | ||
endif() | ||
endif() |