27 lines
1.1 KiB
CMake
27 lines
1.1 KiB
CMake
# First tries to find Python 3, then tries to import the pybind11 module to
|
|
# query the CMake config location, and finally imports pybind11 using
|
|
# find_package(pybind11 REQUIRED CONFIG).
|
|
function(find_pybind11_python_first)
|
|
|
|
# Query Python to see if it knows where the headers are
|
|
find_package(Python3 REQUIRED COMPONENTS Interpreter Development)
|
|
if (NOT pybind11_ROOT OR NOT EXISTS ${pybind11_ROOT})
|
|
execute_process(COMMAND ${Python3_EXECUTABLE}
|
|
-m pybind11 --cmakedir
|
|
OUTPUT_VARIABLE PY_BUILD_PYBIND11_CMAKE
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
RESULT_VARIABLE PY_BUILD_CMAKE_PYBIND11_RESULT)
|
|
# If it was successful
|
|
if (PY_BUILD_CMAKE_PYBIND11_RESULT EQUAL 0)
|
|
message(STATUS "Found pybind11: ${PY_BUILD_PYBIND11_CMAKE}")
|
|
set(pybind11_ROOT ${PY_BUILD_PYBIND11_CMAKE}
|
|
CACHE PATH "Path to the pybind11 CMake configuration." FORCE)
|
|
else()
|
|
unset(pybind11_ROOT CACHE)
|
|
endif()
|
|
endif()
|
|
|
|
find_package(pybind11 REQUIRED CONFIG)
|
|
|
|
endfunction()
|