コンパイルフラグやMakefile.am(またはconfigure.acなどの上位レベル)の変数が変更された場合、autoconf/automakeビルドシステムを使用すると、自動的には再構築されません。これは、Automakeを、必要に応じて再コンパイルする連続ビルドシステムの一部として使用するときに、特に重要になります。Makefileが変更された場合、Automakeはソースファイルを再構築します
私の考えは理論的に上記の問題を解決する.oファイルの依存関係としてMakefileを含めることでした。だから、いくつかの質問:
まず、そのようなルールを追加することは可能ですか?私はすべての単一のMakefile.amにそのカスタムルールを追加する必要はないので、トップレベルのファイル(configure.acなど)に配置できるものは素晴らしいでしょう。
第2に、このアプローチの欠点は、Makefileへの変更が実際にコンパイルに影響を与えないことがあるため、実際には必要ないときに再構築が終了することです。私は、私のビルドが正しいことをより良く保証するために、これと一緒に暮らそうとしている(少なくとも、それがどれほど痛いのか見てみる)のですが、この問題を解決する良い方法はありますか?私はclearmakeが実際のコンパイラコマンド(他の依存関係と一緒に)を保存し、現在のコマンドと前のコマンドを比較して、ファイルを再生成する必要があるかどうかを判断することでこれを解決すると信じています。
変更されたmakefile変数に基づいたものを再構築するのは間違っています。なぜなら、GNU stowのようなツールに必要な 'make install prefix =/some/other/prefix'のようなものを壊すからです。 –
@JackKelly一般的には悪いことがわかりますが、AM_CPPFLAGSのような特定のフラグを変更すると再構築が必要なようです。例えば、 '.../somelib-v2'を' .../somelib-v3'に変更した場合、コードは確実に再コンパイルする必要があります。再コンパイルを強制するために実際のMakefile *の変更を得ることができたら、私は変数のコマンドライン設定を忘れてしまいます。ポインタtobuのために –