我已经使用以下方法克隆并构建了 waf 脚本:

./waf-light configure

然后要构建我的项目(由 Gomspace 提供),我需要将 wafeclipse.py 添加到我的路径中。到目前为止,我还没有找到比这个 setenv 脚本更好的脚本:
WAFROOT=~/git/waf/
export PYTHONPATH=$WAFROOT/waflib/extras/:$PYTHONPATH
export PATH=~/git/waf/:$PATH

调用方式:
source setenv

这在某种程度上是一个非常丑陋的解决方案。有没有更优雅的方式来安装waf?

最佳答案

Fedora(至少是 Fedora 22)有一个 waf 的 yum 包,所以你可以看到可以对 waf 进行系统安装,尽管需要 hack。

运行类似 python3 ./waf-light configure build 之类的程序后,您将获得一个名为 waf 的文件,它实际上是一个 Python 脚本,末尾带有一些二进制数据。如果将其放入 /usr/bin 并以非 root 身份运行,则会出现错误,因为它无法在/usr/bin 中创建目录。如果您以 root 身份运行它,您将获得新目录并且 /usr/bin/waf 正常运行。

这是我从检查 waf Python 脚本中的 find_lib() 函数中学到的技巧。

  • waf 复制到 /usr/bin/waf
  • 以 root 身份运行 /usr/bin/waf 。请注意,它创建了一个目录。你会看到类似 /usr/bin/.waf-2.0.19-b2f63c807a4215294bf6005410c74c18
  • 的东西
  • 将该目录转至/usr/lib,在目录名称中删除 .,例如mv /usr/bin/.waf-2.0.19-b2f63c807a4215294bf6005410c74c18 /usr/lib/waf-2.0.19-b2f63c807a4215294bf6005410c74c18
  • 如果要在 Python3 中使用 waf,请重复步骤 2-3,在 Python3 下运行 Python 脚本 /usr/bin/waf。在 Python3 下,目录名称将以 .waf3-/waf3- 开头,而不是 .waf-/waf-
  • (可选)删除 /usr/bin/waf 末尾的二进制数据。
  • 现在,非 root 用户应该能够只使用 /usr/bin/waf

  • 也就是说,这里有一些需要考虑的事情,就像另一个答案所说的那样:我相信 waf 的作者打算将 waf 嵌入到项目中,以便每个项目都可以使用自己的 waf 版本,而不必担心当有新版本时项目会无法构建华夫。因此,单一全局版本用例似乎不受官方支持。

    关于waf - 怎么安装waf?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45812912/

    10-16 17:09