automakeとは?初心者にもわかる使い方と基本ガイド共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
automakeとは?初心者にもわかる使い方と基本ガイド共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


automakeとは?初心者にもわかる使い方と基本ガイド

ソフトウェアを配布するときには、ソースをどうビルドして実行ファイルを作るかを決める必要があります。automakeは GNU の Autotools の一部で、Makefileを自動的に作ってくれる道具です。これにより、異なるOSやコンパイラの違いを吸収しつつ、安定したビルド手順を提供できます。

automakeがあると、手作業で長いMakefileを書く必要が減り、プロジェクトの構成が整理されます。開発者はビルドの細かな条件を気にせず、機能開発に集中できます。

automakeが解決する課題

従来のMakefileを自分で作ると、環境依存の記述やファイルの依存関係をすべて自分で管理する必要があります。automakeを使うと、共通のルールをテンプレートとして扱い、ソースファイルやサブディレクトリの構成に応じて適切なMakefileを自動生成します。結果として、ビルドの再現性ポータビリティが高まり、他の開発者が参加してもビルドが壊れにくくなります。

準備とセットアップの流れ

始める前に必要なツールを揃えます。通常はautoconfautomake、そして場合によっては libtoolm4 のような追加ツールもインストールします。プロジェクトのルートにMakefile.amと configure に対応するファイルである Makefile.am を用意します。Makefile.am にはビルド対象のプログラム名やライブラリ、インストール先などを記述します。次に autoconfautomake を使って設定スクリプトを生成します。autoreconf -i を実行して configure スクリプトを生成する方法もあります。最後に ./configure を実行して、現在の環境に合わせた Makefile.in を作成し、make でビルドして make install でインストールします。

使い方の基本

Makefile.am の構造はシンプルです。通常は bin_PROGRAMS や lib_LIBS などの変数を使って、ビルドするプログラム名とソースファイルを列挙します。例として「myapp」という実行ファイルを作る場合、myapp_SOURCES には main.c と util.c を列挙します。これを基に automake が Makefile を作成します。実際の手順は次のようになります。

実際の使い方のコツ

プロジェクトのディレクトリ構造を整理すること、Makefile.am は最小限に保つこと、configure.ac には必要な環境検査だけを記述することが大切です。autoreconf -i を使うと、変更後の環境でも再生成が簡単です。初めて使う場合は公式ドキュメントのサンプルに沿って進めるのが良いでしょう。

比較と関係性

ツール主な用途学習難易度特徴
automakeMakefileの自動生成中程度移植性の高いビルドを実現
autoconfConfigureスクリプトの生成中程度環境検査を組み込める
cmakeクロスプラットフォームビルドやや難しいMakefile以外にも対応

automakeの同意語

GNU Automake
Makefileの自動生成を行うツール。Autotoolsスイートの一部として、Makefile.am から Makefile.in を生成します。
Makefile自動生成ツール
ソースコードのビルド設定に基づき、Makefile を自動で作成してくれるツールの総称。Automake の役割を指す一般的な表現です。
Makefile.amからMakefile.inを作成するツール
Automake が担う具体的な機能で、Makefile.am を基に Makefile.in を自動で生成します。
AutotoolsのMakefile自動生成機能
GNU Autotools の一部で、ビルド設定に応じて Makefile を作成する機能の総称です。
自動Makefile生成ツール
Makefile を自動生成する仕組みを指す一般的な表現。Automake の別名的な言い換えとして使われることがあります。

automakeの対義語・反対語

手動ビルド
ビルド作業を自動化ツールに任せず、人の手で一つ一つ実行する状態。自動生成ツールを使わず、コンパイルやリンクの手順を手作業で進めます。
手作業ビルド
機械やスクリプトを使わず、開発者が手作業でビルドを進めること。自動化の恩恵を受けず、ミスのリスクが高まる場合があります。
Makefileを手動で作成
Makefileを自動生成せず、手動でMakefileを作成・編集すること。自動化ツールが担っていた依存関係の記述などを自分で記述します。
Makefile自動生成不使用
Makefileを自動生成する機能を使わず、手動または別の方法でMakefileを用意する状態。
非自動化ビルド
ビルドプロセス全体が自動化されていない状態。自動化ツールを使わず、手動の手順が基本になります。
自動化なしのビルドフロー
ビルドの流れ全体に自動化が組み込まれていない状態。連携ツールやスクリプトの導入がないことを意味します。
人手中心のビルド
人の手作業を中心に進めるビルドプロセス。自動化の割合が低い場面で使われる表現です。
手動依存関係解決
依存関係の解決を自動ツールに任せず、手動で行うこと。バージョンの整合性を自分で管理します。
自動化ツール未使用
ビルドにおいて自動化ツールを一切使わない状態。手動作業を前提とする対義語として挙げられます。

automakeの共起語

Autotools
GNUのビルド自動化ツール群の総称。Autoconf、Automake、Libtool などを組み合わせて、移植性の高いソフトウェアを作るためのツールセットです。
Autoconf
configureスクリプトを自動生成するツール。環境検出や依存性の確認を行い、Makefileの生成を支援します。
Libtool
共有ライブラリのビルドとリンクを安定させるツール。プラットフォーム間の互換性を保つ役割を担います。
Makefile.am
Automakeの入力ファイル。SOURCES、bin_PROGRAMS、noinst_PROGRAMS などのビルド対象を記述します。
Makefile.in
AutomakeがMakefile.amから生成するMakefileの雛形。configure実行後のMakefile生成に使われます。
Makefile
実際にmakeでビルドを行うための指示書。コンパイル・リンク・インストールのルールを含みます。
configure
環境を検出して適切なMakefileを作成するスクリプト。一般的には./configureとして実行します。
configure.ac
Autoconfの入力ファイル。パッケージ情報や依存性、生成するconfigureの指示を記述します。
AC_INIT
Autoconfの初期設定を行うマクロ。パッケージ名、バージョン、連絡先などを設定します。
AM_INIT_AUTOMAKE
Automakeを有効化するためのマクロ。Automakeのルールを有効化します。
AM_PROG_CC
Cコンパイラを検出し、CFLAGS などの設定を準備します。
AM_PROG_CXX
C++コンパイラを検出し、CXX関連の設定を行います。
AC_CONFIG_FILES
configure実行時に生成するMakefile.inなどの一覧を指定するマクロ
AC_CONFIG_HEADERS
config.hの生成を指定するマクロ。config.h.inを元にconfig.hを作ります。
config.h.in
config.hの雛形ファイル。configureが適用されてconfig.hを作成します。
libtoolize
Libtoolの設定ファイルをプロジェクトに適用する準備ツール。
autoreconf
Autoconf/Automake関連のスクリプトを再生成するコマンド。
autoheader
config.h.inからconfig.h用のヘッダファイルを自動生成します。
distcheck
配布パッケージが正しくビルド・テストできることを検証するMakeターゲット。
DESTDIR
インストール先ディレクトリの一時的なプレフィックス。make install時に用います。
bin_PROGRAMS
実行可能ファイルのリストを定義するAutomake変数。
noinst_PROGRAMS
インストール対象外のプログラムを定義する変数。
lib_LIBRARIES
静的/共有ライブラリのビルド対象を定義する変数。
lib_LTLIBRARIES
libtoolで管理するライブラリの定義。
include_HEADERS
ヘッダファイルをインストール時に配布する設定。
EXTRA_DIST
配布物に追加で含めるファイルのリスト
CPPFLAGS
プリプロセッサフラグ。インクルードパスの指定などを設定します。
CFLAGS
Cコンパイラ用の最適化・警告オプションなどを指定します。
AM_CPPFLAGS
Automake用のCPPFLAGS設定。
AM_CFLAGS
Automake用のCFLAGS設定。
AM_LDFLAGS
Automake用のリンク時フラグ設定。
LDLIBS
リンク時に追加するライブラリのリスト。
SOURCES
Makefile.amのSOURCES変数に指定するソースファイルのリスト。
TESTS
Automakeで実行するテストスイートのリスト。

automakeの関連用語

Automake
GNUのビルド自動化ツール。Makefile.am から Makefile.in を生成し、最終的に configure で Makefile を作る仕組みを提供します。
Autoconf
configure スクリプトを生成するツール。環境を検出して最適な設定を適用します。
Libtool
ライブラリのビルドと配布を抽象化するツール。静的/共有ライブラリの扱いを統一します。
aclocal
Automake が必要とするマクロを集約して aclocal.m4 を作るツール。
aclocal.m4
aclocal が生成する、マクロ定義をまとめたファイル。自動化されたマクロの定義を保持します。
Makefile.am
Automake 用の入力ファイル。SOURCES や PROGRAMS などのビルド設定をここに書きます。
Makefile.in
configure が使って実際の Makefile を作るための中間ファイル。Makefile.am から生成されます。
Makefile
ビルドの指示を記述する実際のファイル。最終的に make コマンドで用いられます。
configure
環境を検出して Makefile を生成する実行ファイル。ユーザーの環境に合わせた設定を適用します。
configure.ac
Autoconf に渡す入力ファイル。AC_* マクロで configure の挙動を定義します。
configure.in
configure.ac の旧称。使われることがあります。
AC_INIT
Autoconf の基本マクロ。パッケージ名やバージョンなどを初期化します。
AM_INIT_AUTOMAKE
Automake の初期化マクロ。configure.ac に記述します。
AC_CONFIG_FILES
configure が処理するファイルを列挙します。Makefile や config.h などを生成します。
AC_CONFIG_HEADERS
config.h の生成を指示します。config.h.in から config.h が作られます。
AC_PROG_CC
C コンパイラを検出して設定します。
AC_PROG_CXX
C++ コンパイラを検出して設定します。
LT_INIT
libtool の初期化マクロ。libtool を使ったビルドを有効化します。
libtoolize
libtool のマクロを導入・更新するツール。
AM_PROG_AR
ar(アーカイブ)ツールの検出を行います。
AM_PROG_RANLIB
ranlib の検出を行います(静的ライブラリのインデックス作成などに使用)。
AM_PROG_LIBTOOL
libtool を使ったライブラリのビルドを Automake に連携させます。
AM_SILENT_RULES
ビルド時のコマンド出力を抑制して見やすくします。
AUTOMAKE_OPTIONS
Makefile.am に Automake のオプションを設定します(例: foreign などの互換性オプション)。
SUBDIRS
サブディレクトリの一覧を指定します。子ディレクトリもビルド対象に含める場合に使います。
bin_PROGRAMS
ビルドする実行ファイル(バイナリ)を列挙します。
lib_LIBS
ライブラリのリンク対象を指定します。
lib_LTLIBRARIES
libtool 形式のライブラリをビルドする場合の設定。
noinst_PROGRAMS
インストール対象外のプログラムを定義します。
EXTRA_DIST
配布に含める追加ファイルを列挙します。
SOURCES
ビルド対象となるソースファイルを列挙します。
HEADERS
ヘッダファイルを列挙します。
CPPFLAGS
プリプロセッサ用の追加フラグ。
CFLAGS
C コンパイルの追加フラグ
AM_CPPFLAGS
C/C++ プリプロセッサフラグを追加します。
AM_CFLAGS
C コンパイル用の追加フラグ。
AM_CXXFLAGS
C++ コンパイル用の追加フラグ。
AM_LDFLAGS
リンク時の追加フラグ。
TESTS
Automake が実行するテストプログラムの一覧。
TESTS_ENVIRONMENT
テスト実行時の環境変数を設定します。
config.h.in
Autoconf で生成される config.h のテンプレート
config.h
configure 実行後に作成される設定ヘッダ。

インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14086viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
1950viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
842viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
585viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
569viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
537viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
528viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
459viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
443viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
424viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
370viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
346viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
342viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
319viws
select句・とは?初心者でも分かるSQLの基本と使い方共起語・同意語・対義語も併せて解説!
301viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
296viws
ダイレクトチャットとは?初心者向けガイドで使い方と注意点を徹底解説共起語・同意語・対義語も併せて解説!
295viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
294viws
解像度スケールとは?初心者でも分かる解像度スケールの基礎と使い方共起語・同意語・対義語も併せて解説!
275viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
235viws

新着記事

インターネット・コンピュータの関連記事