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_LIBRARY
和 LibClang_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.)
构建 dds-tutorial-cpp-ex 时未找到 OpenSpliceConfig.cmake 或 opensplice-config.cmake