使用 scons 编译后执行二进制文件

发布于 2024-09-30 19:44:39 字数 418 浏览 4 评论 0原文

我正在使用 scons 编译 2 个二进制文件。编译分两个阶段进行。第一个二进制文件的编译和执行生成编译第二个二进制文件所需的文件。

每个编译都是通过单独的Environment()完成的。 SConstruct 文件的相关部分如下所示:

env_gen.Program('#gen', gen_src)
env_gen.Command(ker_src + generated_src, "./gen")
env_ker.Program('#ker', ker_src + generated_src)

我遇到的问题是,即使“ker”的编译发生在“gen”执行之后,“ker”编译也会抱怨缺少生成的文件。

这是因为在执行“./gen”之前生成了“ker”的依赖列表吗? 有谁知道如何克服这个问题?

TIA

I am using the scons to compile 2 binaries. Compilation happens in 2 stages. The compilation and execution of the first binary generates files needed for compilation of second binary.

Each compilation is done via separate Environment().
The relevant portion of SConstruct file looks like this:

env_gen.Program('#gen', gen_src)
env_gen.Command(ker_src + generated_src, "./gen")
env_ker.Program('#ker', ker_src + generated_src)

The problem that I am having is that even though the compilation of 'ker' happens after the execution of the 'gen', 'ker' compilation complains about missing generated files.

Is this because the list of dependency for 'ker' is generated before './gen' is executed?
Does anyone know how to overcome this??

TIA

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尾戒 2024-10-07 19:44:39

假设“ker”取决于“gen”生成的文件,我认为这可能就是您想要的:

GENERATED_FILES = env_gen.Command(ker_src + generated_src, "./gen")
env_ker.Depends(GENERATED_FILES)
env_ker.Program('#ker', ker_src + generated_src)

检查 Scons 手册 了解使用 env.Depends() 显式定义依赖项的详细信息

Assuming "ker" depends on the files generated by "gen", I think this might be what you want:

GENERATED_FILES = env_gen.Command(ker_src + generated_src, "./gen")
env_ker.Depends(GENERATED_FILES)
env_ker.Program('#ker', ker_src + generated_src)

Check the Scons manual for details on explicitly defining dependencies using env.Depends()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文