我想生成一些源文件,并使用生成的文件进行编译..
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文件,后续构建也会失败。
答案 0 :(得分:1)
您告诉 SCons 您的env.Command()
的结果(=目标)是&#34; /tmp/dummy
&#34;。尝试使用
gen = env.Command("demo.cc", "demo.json","demo.py $SOURCE > $TARGET")
相反, SCons 可以自动获取依赖关系。您不需要明确的Depends()
。