Python waf多步骤构建-目标路径
在我们的一个项目中,我需要使用Python waf多步骤构建-目标路径,python,waf,Python,Waf,在我们的一个项目中,我需要使用waf构建一个库。 该库有多个步骤,比如构建二进制文件,然后执行二进制文件 生成更多的文件,这些文件将包含在进一步的构建中。 要运行二进制文件(在中间步骤中生成),我需要 路径-作为字符串,以便我可以为二进制文件添加前缀。从Waf的书中,我看到了一个例子 对bld.path.find_dir()和bld.path.parent.find_dir()的一些引用。 但这些函数不以字符串形式返回路径。 还有bld.path.abspath(),它以字符串形式返回源路径 我
waf
构建一个库。
该库有多个步骤,比如构建二进制文件,然后执行二进制文件
生成更多的文件,这些文件将包含在进一步的构建中。
要运行二进制文件(在中间步骤中生成),我需要
路径-作为字符串,以便我可以为二进制文件添加前缀。从Waf的书中,我看到了一个例子
对bld.path.find_dir()
和bld.path.parent.find_dir()
的一些引用。
但这些函数不以字符串形式返回路径。
还有bld.path.abspath()
,它以字符串形式返回源路径
我希望能够得到生成的二进制文件的路径。以下是我正在尝试的一个片段:
bld.program(
source = my_sources,
target = 'my_binary', # <-- path to this
includes = my_includes,
cflags = my_cflags,
linkflags = my_ldflags
)
bld.add_group()
# use the above generated binary file
bld.program(
来源=我的来源,
target='my#u binary',#build/${build_target}/${your_binary}
-除非覆盖某些默认值
更新#1
一个精简的东西应该让你继续,特别是构建目标的派生,也一定要检查包含很多例子的
def configure(ctx):
ctx.load(...)
ctx.env.appname = APPNAME
ctx.env.version = VERSION
ctx.define(...)
ctx.check_cc(...)
ctx.setenv('debug', env=ctx.env.derive())
ctx.env.CFLAGS = ['-ggdb', '-Wall']
ctx.define('DEBUG',1)
ctx.setenv('release', env=ctx.env.derive())
ctx.env.CFLAGS = ['-O2', '-Wall']
ctx.define('RELEASE',1)
def build(bld):
### subdirs :) under build are usually related to build variant or command
print (">>>>> "+bld.cmd)
print (">>>>> "+bld.variant)
bin = bld.program(...)
from waflib.Build import BuildContext
class release(BuildContext):
cmd = 'release'
variant = 'release'
class debug(BuildContext):
cmd = 'debug'
variant = 'debug'
您的意思是,有一个名为build\u target
的内置变量,它指向生成目录?实际上,当您从上下文conf.setenv('debug',env=conf.env.deriver())派生生成目标时,您定义了该生成目标。
(不知道如何将其设置为现有上下文,但可能直接通过conf.ENV.*
variables.
我仍然没有得到整体解决方案:(在哪个阶段需要路径、配置或构建?到目前为止您尝试了什么?在构建阶段,我想获得二进制文件的abs路径,以便在下一组规则中使用。