如何安装waf?
How to install waf?
我已经使用以下方法克隆并构建了 waf
脚本:
./waf-light configure
然后要构建我的项目(由 Gomspace 提供),我需要将 waf
和 eclipse.py
添加到我的路径中。到目前为止,我还没有找到比这个 setenv
脚本更好的了:
WAFROOT=~/git/waf/
export PYTHONPATH=$WAFROOT/waflib/extras/:$PYTHONPATH
export PATH=~/git/waf/:$PATH
调用方式:
source setenv
这在某种程度上是一个非常丑陋的解决方案。有没有更优雅的waf安装方式?
你没有安装waf。您找到的正确构建 waf 的命令:/waf-light configure build
然后,对于您创建的每个项目,您将构建的 waf
脚本放入该项目的根目录中。我找不到参考资料,但这是 waf:s 主要作者 Thomas Nagy 希望使用该工具的方式。重新打包 waf 以使该工具可安装的项目不是 "officially sanctioned."
不安装有利也有弊:
缺点:
- 您必须将 100kb 的半二进制大
waf
文件添加到您的存储库。
- 由于该文件包含二进制代码,人们可以合法反对分发它。
优点:
- 新版本的 waf 是否打破旧版本并不重要API。
- 用户在编译项目之前不需要安装waf——系统上有Python就足够了。
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
- 如果您想将 waf 与 Python3 一起使用,请重复步骤 2-3 运行在 Python3 下的 Python 脚本
/usr/bin/waf
。在 Python3 下,目录名称将以 .waf3-
/waf3-
开头,而不是 .waf-
/waf-
.
- (可选)去掉
/usr/bin/waf
. 末尾的二进制数据
- 现在,非 root 用户应该可以使用
/usr/bin/waf
。
也就是说,这里有一些需要考虑的事情,就像另一个答案所说的:我相信waf的作者打算将waf嵌入到项目中,以便每个项目都可以使用自己版本的waf而不用担心项目无法构建当有更新版本的 waf 时。因此,one-global-version 用例似乎没有得到官方支持。
我已经使用以下方法克隆并构建了 waf
脚本:
./waf-light configure
然后要构建我的项目(由 Gomspace 提供),我需要将 waf
和 eclipse.py
添加到我的路径中。到目前为止,我还没有找到比这个 setenv
脚本更好的了:
WAFROOT=~/git/waf/
export PYTHONPATH=$WAFROOT/waflib/extras/:$PYTHONPATH
export PATH=~/git/waf/:$PATH
调用方式:
source setenv
这在某种程度上是一个非常丑陋的解决方案。有没有更优雅的waf安装方式?
你没有安装waf。您找到的正确构建 waf 的命令:/waf-light configure build
然后,对于您创建的每个项目,您将构建的 waf
脚本放入该项目的根目录中。我找不到参考资料,但这是 waf:s 主要作者 Thomas Nagy 希望使用该工具的方式。重新打包 waf 以使该工具可安装的项目不是 "officially sanctioned."
不安装有利也有弊:
缺点:
- 您必须将 100kb 的半二进制大
waf
文件添加到您的存储库。 - 由于该文件包含二进制代码,人们可以合法反对分发它。
优点:
- 新版本的 waf 是否打破旧版本并不重要API。
- 用户在编译项目之前不需要安装waf——系统上有Python就足够了。
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
- 如果您想将 waf 与 Python3 一起使用,请重复步骤 2-3 运行在 Python3 下的 Python 脚本
/usr/bin/waf
。在 Python3 下,目录名称将以.waf3-
/waf3-
开头,而不是.waf-
/waf-
. - (可选)去掉
/usr/bin/waf
. 末尾的二进制数据
- 现在,非 root 用户应该可以使用
/usr/bin/waf
。
也就是说,这里有一些需要考虑的事情,就像另一个答案所说的:我相信waf的作者打算将waf嵌入到项目中,以便每个项目都可以使用自己版本的waf而不用担心项目无法构建当有更新版本的 waf 时。因此,one-global-version 用例似乎没有得到官方支持。