gpt4 book ai didi

python - waf多步构建-目标路径

转载 作者:行者123 更新时间:2023-11-28 18:47:56 25 4
gpt4 key购买 nike

在我们的一个项目中,我需要使用 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

P.S 这可能看起来相当微不足道,但我来自 make 背景,并且是新手waf !

谢谢。

--编辑--

我可以在这里构建 my_binary,但我想获取它的绝对路径,并在后续步骤中引用它

最佳答案

build/${build_target}/${your_binary} - 除非你覆盖一些默认值

更新#1

一个应该让你继续前进的东西,特别是构建目标的推导,也一定要检查 waf book其中包括很多示例。

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'

关于python - waf多步构建-目标路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17370761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com