cppyy cmake 构建找不到 LibClang

Cppyy cmake build unable to find LibClang

我一直在尝试使用 cppyy 为 C++ 库构建一些 python 绑定。目前我正在使用这里的 cookiecutter 食谱:https://github.com/camillescott/cookiecutter-cppyy-cmake

但是包在查找 LibClang_LIBRARYLibClang_PYTHON_EXECUTABLE 时遇到问题。如果我使用 conda 或 pip 安装 cppyy,并且在 python 中导入 cppyy 工作正常,情况也是如此。

我尝试用 cmake -DLibClang_LIBRARY=<path/to/libclang> -DLibClang_PYTHON_EXECUTABLE=<path/to/executable> .. 手动定义路径,虽然它随后找到了 LibClang_LIBRARY,但找不到 LibClang_PYTHON_EXECUTABLE.

似乎是cmake找到合适路径的问题,完整的错误是

CMake Error at /usr/local/Cellar/cmake/3.21.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find LibClang (missing: LibClang_LIBRARY
  LibClang_PYTHON_EXECUTABLE)
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.21.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindLibClang.cmake:47 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/FindCppyy.cmake:286 (find_package)
  CMakeLists.txt:71 (cppyy_add_bindings)

有没有其他人发现这个问题或更好的解决方案?

千篇一律示例中的 cmake 片段似乎比 cppyy-cling 中的片段更旧:https://github.com/wlav/cppyy-backend/tree/master/cling/python/cppyy_backend/cmake

(这些是安装在Python site-packages目录下cppyy_backend/cmake下的。)

新版本使用谓词保护搜索,以防变量像您使用 -D... 选项那样被显式定义,我怀疑这将解决您遇到的大部分问题。

如果可用,它还会使用 llvm-config,这比尝试可能的目录更可靠。