SCons无法找到生成的文件

时间:2017-09-27 12:03:53

标签: build dependencies scons

我想生成一些源文件,并使用生成的文件进行编译..

gen = env.Command("/tmp/dummy", "demo.json","demo.py $SOURCE > $TARGET")
env.AlwaysBuild(gen)

bin=env.Program(target='demo', source=[Glob("*.cc")])
env.Depends(bin, gen)

gen将生成所需的demo.cc

  

gen = env.Command(&#34; / tmp / dummy&#34;,&#34; demo.json&#34;,&#34; demo.py $ SOURCE&gt; $ TARGET&#34;)< / p>

但是在编译demo时会出现错误,如下所示:

  

失败:来源demo.cc' not found, needed by target demo.o&#39;。

通过ls demo.cc,我确信所需的文件demo.cc确实是在正确的目录中生成的。

原因应该是具有依赖性的东西。注意到我在demo.cc上指定了bin的显式依赖项。仍然失败了。

任何想法为什么?

=====更多细节=====

每一个干净的构建,即scons -c&amp;&amp; scons -j4,有效。但即使使用demo.cc文件,后续构建也会失败。

1 个答案:

答案 0 :(得分:1)

您告诉 SCons 您的env.Command()的结果(=目标)是&#34; /tmp/dummy&#34;。尝试使用

gen = env.Command("demo.cc", "demo.json","demo.py $SOURCE > $TARGET")

相反, SCons 可以自动获取依赖关系。您不需要明确的Depends()