特定の状況では、特定のターゲット ファイルが最新かどうか、つまり、shake を使用してビルドするとターゲットに推移的に寄与するルールが実行されるかどうかをすぐに知りたいことがあります。
シェイクでこれを達成する最良の方法は何ですか?
私の質問は、 Shake: Signal if anything had to be rebuilt at all に多少関連しています。ただし、ビルド製品には一切触れたくないので、実際のビルドは実行したくありません。
特定の状況では、特定のターゲット ファイルが最新かどうか、つまり、shake を使用してビルドするとターゲットに推移的に寄与するルールが実行されるかどうかをすぐに知りたいことがあります。
シェイクでこれを達成する最良の方法は何ですか?
私の質問は、 Shake: Signal if anything had to be rebuilt at all に多少関連しています。ただし、ビルド製品には一切触れたくないので、実際のビルドは実行したくありません。
Shake では、どのファイルが「ダーティ」であるかを判断するのは少し困難です。関心のあるファイルが任意のオラクルに依存している場合 (推移的であっても)、オラクルは常にダーティであるため、ファイルは「ダーティ」と見なされます。ただし、Shake が依存するルール/オラクルを再実行し、それらが変更されない場合、その時点で再びクリーンと見なされます。その結果、ほとんどのルールは、何かが実行される前にダーティと見なされ、一部のルールを実行した後で初めてクリーンになります。
私は何か良いことをするためにチケットを上げました。1 つのオプションには、ターゲット ルールが与えられ、どのリーフがそれに依存し、ダーティであるかを示します。これにより、オラクルが一覧表示され (変更しないことが合理的に予想されます)、ソース ファイルが一覧表示された場合は、再構築することが期待されます。
(誰か良いアイデアがあれば、提案を歓迎します。)