3

autoconf/automake ビルド システムを使用している場合、コンパイラ フラグまたは Makefile.am (または configure.ac のようなさらに高いレベル) 内の他の変数が変更された場合、その Makefile に関連付けられた C++ ソース ファイルは自動的に再ビルドされません。これは、必要に応じてのみ再コンパイルする継続的なビルド システムの一部として automake を使用しているため、特に重要になります。

私の考えは、理論的には上記の問題を解決する .o ファイルの依存関係として Makefile を含めることでした。いくつか質問があります:

まず、そのようなルールを追加することは可能ですか? そのカスタム ルールをすべての Makefile.am に追加する必要はないようにしたいので、最上位ファイル (configure.ac など) に配置できるものは素晴らしいでしょう。

第 2 に、このアプローチの欠点は、場合によっては Makefile への変更が実際にはコンパイルに影響しないため、実際には必要ないときに再構築することになります。ビルドが正しいことをより確実に保証するために、これを受け入れて(または少なくともそれがどれほど苦痛かを試して)喜んでいると思いますが、この問題を解決するためのより良い方法はありますか? clearmake は、実際のコンパイラ コマンドを (他の依存関係と共に) 保存し、現在のコマンドと以前のコマンドを比較して、ファイルを再生成する必要があるかどうかを判断することで、これを解決すると考えています。

4

1 に答える 1

2

ccache ( ./configure CXX='ccache g++'、または ccache の g++ をパスに追加するだけ) を使用する場合、偽の再構築は非常に安価で安全です。また、autoconf マクロを使用しないようにしてAM_MAINTAINER_MODEください。これにより、依存関係の追跡がオプションになります ( --enable-maintainer-mode フラグの条件付き)。

于 2011-07-01T17:38:37.683 に答える