多くのプロジェクトには、多くのソースファイルが含まれます。原則として、これらのファイルのいずれかを単独で手動でコンパイルできます。コンパイラを使用して、そのソースファイルをマシンコードを含む(一時的な)オブジェクトファイルにコンパイルします。
実際には、すべてのソースファイルを一度に1つずつ手動でコンパイルするのは非常に面倒であり、再コンパイルする必要のあるソースファイルを手動で追跡するのはさらに面倒です。そのため、自動ビルドプログラム(通常は「make」と呼ばれます)を実行して、プロジェクト全体を一度にビルドします。そのプログラムは、多くの場合「makefile」という名前のさらに別の「ソース」ファイルに保存されているソースファイルのリストを調べ、それぞれのコンパイラを呼び出します。「make」の多くのバージョンは、変更されたファイルのみを再コンパイルするのに十分スマートです。したがって、再コンパイルする必要があります。
コンパイルは間違いなくビルドプロセスの最も重要な部分ですが、多くの場合、「ビルド」はコンパイラの後に他の多くのプログラムを実行します。場合によっては、完全なビルドでは、コンパイラーの実行よりもこれらの他のプログラムの実行に多くの時間が費やされます。
たとえば、多くの人は、すべてのソースコードを最新バージョンにコンパイルするだけでなく、標準の一連のテスト(C2:One Button Testing)を1つのボタンでコンパイルすると便利だと感じています。したがって、makefileには、ビルドプロセスの一部となるこれらのテストを実行するために必要なコマンドもリストされます。