まず、code/speed.py
出力ファイル名を制御できないようです...ハードコードされた出力ファイル名は、通常、sconsでは悪い習慣と見なされます(yaccツールを参照)。次のように読みやすくなります。
speed = Command('speed_analysis.tex', [], 'python code/speed.py -o $TARGET')
これで、PDFターゲットはreport.pdf
fromを生成しreport.tex
ます。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')