1

私には2つの推測があります:

最初からコンパイルされていますが、CCACHE を使用してはるかに高速に動作します

どのモジュールがコンパイルされたかを検出することにより、続行します

OUT ディレクトリではなく CCACHE をクリアするとどうなりますか? 継続するか、再開するか。

4

1 に答える 1

1

ここで重要なレイヤーは複数あります。

  • 最上位には、(少なくともビルド システムを簡単に見てからの私の印象です) メイク システム (または同様のもの) があります。コマンドを呼び出すことにより、特定の「ターゲット」をビルドします。ターゲットが既に存在し、最新の場合 (ターゲットの基になるソース ファイルが、作成されたターゲットよりも新しくない場合)、make はコマンドを呼び出しません。
  • make が呼び出すことができるコマンドの 1 つは、コンパイル コマンドです (オプションで 'ccache' を前に付けます)。ccache というプレフィックスが付いたコマンドが呼び出されると、ccache はそのキャッシュ ディレクトリをチェックして、再利用できるものがあるかどうかを確認します。何かが利用可能な場合、ccache は単にファイルをそのキャッシュから目的の場所にコピーします。利用可能なものがない場合、ccache はコンパイラ コマンドを呼び出します (その後、そのキャッシュに結果を入力します)。

ccache キャッシュ ディレクトリをクリアすると、make の「ターゲット」がまだ存在し、最新であることを意味します。これは、make がそれらのターゲットに対して再コンパイルが不要であると判断することを意味します。つまり、再起動ではなく継続します。この時点では、Ccache はまだ登場していません。

于 2014-11-25T12:31:35.373 に答える