GNU Automakeは、コンパイルプロセスの一部を自動化するソフトウェア開発ツールです。よくあるコンパイルの問題を軽減します。例えば、必要な依存関係を指摘してくれます。
Makefile.amと呼ばれるファイルから、1つ以上のMakefile.in を自動的に生成します。各Makefile.amには、コンパイラやリンカーのフラグ、依存関係とそのバージョンなど、コンパイルされたソフトウェアに必要な変数定義が含まれています。生成されたMakefile.inは移植性が高く、 GNU コーディング標準の Makefile 規約に準拠しているため、configure スクリプトで使用してMakefile を生成することができます。[ 2 ]
フリーソフトウェア財団はオートメイクGNUプログラムの一つとして、またGNUビルドシステムの一部として使用されている。GTK[ 3 ]などのGNUアプリケーションやライブラリ、またXCircuit[4]などの非GNUソフトウェアのビルドに使用されている。

Automakeは、プログラマがMakefile全体を手作業で記述するのではなく、高水準言語でMakefileを記述できるようにすることを目的としています。単純なケースでは、以下のコードで十分です。
Automakeは依存関係情報の自動生成も行います[ 5 ]。これにより、ソースファイルが変更された場合、次にmakeコマンドを実行する際に、どのソースファイルが再コンパイルする必要があるかが分かります。コンパイラが許可している場合、Automakeは依存関係システムを動的にしようとします。つまり、ソースファイルがコンパイルされるたびに、コンパイラにファイルの依存関係リストの再生成を依頼することで、そのファイルの依存関係が更新されます。言い換えれば、依存関係の追跡はコンパイルプロセスの副作用です。
これは、プログラマがプロジェクトの作業を開始したときに依存関係が一度だけ検出されるという、一部の静的依存関係システムの問題を回避しようとするものです。[ 6 ]
AutomakeはPerlで書かれており、 GNU Autoconfと一緒に使わなければなりません。[ 2 ] Automakeには次のコマンドが含まれています。
しかし、 aclocalは autoconf ユーザーにとって便利な汎用プログラムです。例えば、GNU コンパイラコレクション(GCC) は、 makefile が手書きであるにもかかわらず、 aclocal を使用しています。
Autoconfと同様に、Automakeも完全な下位互換性はありません。例えば、automake 1.13で作成されたプロジェクトは、必ずしもautomake 1.14で動作するとは限りません。[ 7 ]