デフォルトでは、SConsはプログラムの構築に使用される「レシピ」を調べ、そこから暗黙の依存関係を抽出するようです。たとえば、SConstructに次のものが含まれているとします。
Command('foo', 'foocreator.py', '/usr/bin/python foocreator.py > foo')
そして、私はすでに「foo」を構築しました(「foo」は最新です)。ここで、SConstructを変更して(より現実的には、さまざまなオプションを渡します)、「foo」のコマンドは次のようになります。
Command('foo', 'foocreator.py', '/usr/bin/qrsh -V -cwd /usr/bin/python foocreator.py > foo')
(つまり、SGEを介してfoocreator.pyスクリプトを実行します)ここで、SConsはfooを再構築しようとします。これは、「/ usr / bin/qrshへの新しい依存関係」と「ドロップされた依存関係」が原因であると--debug=explainが通知します。 / usr / bin / python ")。
レシピからの依存関係のこの推論を、できればグローバルに防ぐにはどうすればよいですか?これまでのところ、この動作の仕様を見つけることさえできませんでした。'foo'が実際にはpythonやqrshに依存していないという事実を詳しく説明する必要はありません。これは、これらのプログラムのすべてのターゲットとすべての可能な場所に対して行う必要があるためです。「正しい」方法が必要です。
編集:私はまた、次のように、各ターゲットに無視を明示的に追加しようとしました:
Ignore('foo', '/usr/bin/python')
Ignore('foo', '/usr/bin/qrsh')
そしてこれでもうまくいきません!SConsは、qrshを実行するかどうかを切り替えるたびに、すべてを再構築したいと考えています。