首先,它看起来像code/speed.py
公顷s无法控制输出文件名...硬编码输出文件名在scons中通常被认为是不好的做法(请参阅yacc工具)。它会读这样的好:现在
speed = Command('speed_analysis.tex', [], 'python code/speed.py -o $TARGET')
,该PDF目标产生从report.tex
一个report.pdf
。我猜想有一个从report.tex
到speed_analysis.tex
(通过Tex包括或类似的东西)隐含的依赖关系。
此:
Depends(report, speed)
是正确的表达依赖关系如果缺少。虽然我很惊讶的PDF生成器没有看到隐含的依赖扫描仪...
您应该使用验证DEP树:
scons --tree=all
它应该是这个样子:
+ report.pdf
+ report.tex
+ speed_analysis.tex
+ code/speed.py
+ /usr/bin/python
+ /usr/bin/pdflatex
现在,回答您关于脚本(speed.py
)始终运行的问题,那是因为它没有输入。 scons无法检查。如果只有py文件本身,那么脚本文件必须将作为输入。您需要告诉scons有关其短路后续运行的所有直接和隐含依赖关系:
Command('speed_analysis.tex', 'code/speed.py', 'python $SOURCE -o $TARGET')