怎么安装waf?

now*_*wox 4 waf

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

./waf-light configure
Run Code Online (Sandbox Code Playgroud)

然后要构建我的项目(由Gomspace提供),我需要将waf和添加eclipse.py到我的路径中。到目前为止,我还没有找到比这个setenv脚本更好的:

WAFROOT=~/git/waf/
export PYTHONPATH=$WAFROOT/waflib/extras/:$PYTHONPATH
export PATH=~/git/waf/:$PATH
Run Code Online (Sandbox Code Playgroud)

调用方式:

source setenv
Run Code Online (Sandbox Code Playgroud)

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

Bjö*_*ist 6

你没有安装waf。您找到的正确构建 waf 的命令:/waf-light configure build然后对于您创建的每个项目,您将构建的waf脚本放入该项目的根目录中。我找不到参考资料,但这就是 waf: 的主要作者 Thomas Nagy 希望使用该工具的方式。重新打包 waf 以使该工具可安装的项目并未得到“官方认可”。

不安装有优点和缺点:

缺点:

  • 您必须将半二进制 100kb 大waf文件添加到您的存储库。
  • 由于该文件包含二进制代码,人们可能对分发它有法律异议。

好处:

  • 新版本的 waf 是否破坏了旧的 API 并不重要。
  • 用户在编译项目之前不需要安装waf——系统上有Python就足够了。


Syn*_*ted 1

Fedora(至少是 Fedora 22)有一个用于 waf 的 yum 软件包,因此您可以看到可以对 waf 进行系统安装,尽管需要破解。

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

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

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

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