Cppy cmake 构建无法找到 LibClang

Posted

技术标签:

【中文标题】Cppy cmake 构建无法找到 LibClang【英文标题】:Cppyy cmake build unable to find LibClang 【发布时间】:2021-09-28 14:11:41 【问题描述】:

我一直在尝试使用 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)

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

【问题讨论】:

【参考方案1】:

cookie 切割器示例中的 cmake 片段似乎比 cpyy-cling 中的片段更旧:https://github.com/wlav/cppyy-backend/tree/master/cling/python/cppyy_backend/cmake

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

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

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

【讨论】:

谢谢,通过删除 coockiecutter 文件并使用已安装的 make 文件,此错误消失了!

以上是关于Cppy cmake 构建无法找到 LibClang的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 和 Cmake 无法找到绝对存在的 cpp 文件

Cmake 无法在 Homebrew 中找到 boost_pyhton 库

在 macOS 上使用 Ninja 进行 CMake GUI

qt creator创建cmake构建的程序,无法启动调试(点左下角运行不出结果 No executable specified.)

CMake configure_file没有源代码构建

构建 dds-tutorial-cpp-ex 时未找到 OpenSpliceConfig.cmake 或 opensplice-config.cmake