【问题标题】:How to properly build binder for pybind11如何为 pybind11 正确构建活页夹
【发布时间】:2020-01-04 02:59:07
【问题描述】:

我是 binder 的新用户,我关注了 the installation steps,但是当我运行最后一个以下命令时:

cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_EH=1 -DLLVM_ENABLE_RTTI=ON .. && ninja

它说: CMake Error: The source directory "/Users/cuinjune/prefix" does not appear to contain CMakeLists.txt.

我错过了什么吗?我按照步骤两次,但仍然停留在最后一步。 任何指导将不胜感激。

【问题讨论】:

  • How to properly build binder for pybind11? 根据您链接的安装步骤,pybind11 不是构建binder 的要求吗?
  • @SaurabhPBhandari 是的,这是一项要求。我已经安装了。
  • 你能用日志更新问题吗?
  • 你能按照说明成功构建吗?

标签: python pybind11 android-binder


【解决方案1】:

我无法使用此 installation steps 成功构建 binder。我也收到以下错误:

CMake 错误:源目录“$HOME/prefix”似乎没有 包含 CMakeLists.txt。指定 --help 使用,或按帮助 CMake GUI 上的按钮。

但是,安装步骤似乎已经过时。你可以找到最新的安装步骤here和binder存储库here

docs 中所述,您可以克隆binder 存储库并运行build-and-run-tests.py 进行默认安装。


在运行build-and-run-tests.py 时,如果您处于Building tool: binder... 这一步,则似乎该过程将永远持续下去,因为没有立即可用的详细输出。

相反,您可以终止构建并在终端中手动执行命令以获得详细输出。

例如,考虑以下输出:

Building tool: binder...
cd /home/test/binder/build/llvm-6.0.1/build_6.0.1.linux.ubuntu.release && cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_EH=1 -DLLVM_ENABLE_RTTI=ON  .. && ninja bin/binder clang -j1

您可以终止 (Ctrl+C) 构建并在终端中按顺序手动运行命令(再次运行 build-and-run-tests.py 以继续手动执行命令后的构建),

cd /home/test/binder/build/llvm-6.0.1/build_6.0.1.linux.ubuntu.release
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_EH=1 -DLLVM_ENABLE_RTTI=ON  ..
ninja bin/binder clang -j1

此外,在最后一个命令中,您可以增加并行执行的作业数量。

来自man page

-j N

并行运行 N 个作业 [默认=从可用 CPU 派生]


还要确保安装了 clangninja-build 等先决条件,如本期 here 中所述

【讨论】:

  • 我按照最新的安装步骤操作,但由于同样的问题而失败。当我运行 build-and-run-tests.py 脚本时,它似乎冻结了,所以构建需要很长时间。
  • @ZackLee,它在哪一步冻结?基于这个issue,它也可能需要几个小时
  • @ZackLee,我能够通过运行 build-and-run-tests.py 脚本成功构建 binder虽然花费了很多时间),请注意测试可能会失败,但正如作者here回复this所提到的,应该没问题
  • 构建它花了多长时间?您是否更改了 -j 标志的设置?
  • @ZackLee,花了将近一天的时间才完成,但是我使用的是虚拟机,我确实尝试更改 -j 标志(它确实有帮助,但如果 N > 2 并且我需要,有时构建会失败重新启动构建,但是它从它离开的地方恢复),我建议您手动执行命令,因为它指示有多少对象需要详细构建,这至少是进度的指标,还请注意您需要运行手动执行命令后脚本一次,以便完成剩余步骤
猜你喜欢
  • 2022-09-23
  • 1970-01-01
  • 2022-01-26
  • 2020-08-28
  • 2022-10-15
  • 2019-07-21
  • 2019-04-27
  • 2016-01-31
  • 1970-01-01
相关资源
最近更新 更多