【发布时间】:2011-05-09 22:06:06
【问题描述】:
我有一个看起来像这样的构建器:
sFooBuilder = Builder( action = os.path.join(rBuildPath, 'foo_binary') + ' $SOURCE',
suffix = '.c',
src_suffix = '.foo'
)
由于我所依赖的二进制文件不接受 $TARGET 参数并且会产生执行错误,否则我只指定 $SOURCE 参数。 发生的情况是二进制文件的输出文件被放置在 src 目录而不是变体目录中。但是 SCons 期望输出文件位于变体目录中。
每次调用 scons 时,都会执行上面的构建目标,原因如下:
scons: building `variant_dir/foo.c' because it doesn't exist
仅通过命令生成器将文件复制到变体目录也不起作用
scons: warning: Two different environments were specified for target foo.c,
but they appear to have the same action: foo_binary $SOURCE
File "sconscript",
scons: *** Multiple ways to build the same target were specified for: foo.c foo.foo'] and from ['foo.c'])
File "/sconscript",
我的问题是这是否是预期的行为?
有什么建议(除了修复使用的二进制文件)如何解决这种情况吗?不幸的是,我找不到任何涉及上述案例的文档。
提前致谢!
【问题讨论】:
-
你有逻辑错误。您有多个构建命令来创建相同的目标。我不能说更多,因为在处理完构建脚本的完整列表后可能会发现某些错误。
标签: scons