

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに
この記事では makefile.in とは何か を中学生にも分かるように丁寧に解説します。ソフトウェアを作るときには複数のファイルを組み合わせてビルドしますが、その過程を自動化する仕組みが Makefile です。この自動化の世界で重要な役割を果たすのが makefile.in というファイルです。
makefile.in とは何か
makefile.in は実際に動作するプログラムではなく、ビルドのときに使われるテンプレートのようなファイルです。名前の通り makefile.in は次の段階で変化します。まず Makefile.am というファイルから自動ツールが makefile.in を作成します。次に configure というスクリプトが makefile.in を読み込み、環境に合わせて実際の Makefile を作り出します。この仕組みのおかげで同じソフトウェアをさまざまなOSや環境で正しくビルドできるのです。
Makefile.in と Makefile の違い
Makefile は実際にコマンドを実行してソフトウェアをビルドする指示書です。一方 makefile.in はその指示書の元となるテンプレートです。Makefile.in は文字どおりのテンプレートで、変数の値やパスの違いが実際の環境に合わせて置換されます。最終的に生成されるのは Makefile であり、ここからビルドが始まります。
なぜ makefile.in が使われるのか
複数のプラットフォームや設定で動作するソフトウェアを作るとき、すべての環境に合わせた Makefile を手作業で作るのは大変です。Makefile.in を使うと、共通の部分はテンプレートとして一箇所にまとめ、環境ごとの差異だけを configure が埋めてくれるため管理が楽になります。これにより新しい環境でも同じソースコードを正しくビルドできる可能性が高まります。
Makefile.in の生成元と流れ
一般的な流れは以下のとおりです。まずソースコードの開発者は Makefile.am や configure.ac などのファイルを準備します。次に自動化ツールがこれらのファイルを読み取り makefile.in として出力します。その後 configure スクリプトが実行され、現在の環境に合わせた実際の Makefile を作ります。この実際の Makefile がビルドの指示書として機能します。
実例と注意点
学習の際はまず自分の環境で自動化ツールをインストールしてから、サンプルのソフトウェアをビルドしてみると理解が深まります。makefile.in は自分で直接編集するべき対象ではなく、あくまでも元となるテンプレートを編集してから再生成するのが基本です。もし自分で直したい箇所がある場合は Makefile.am や configure.ac を修正してから再度ビルドし直します。
実用的な流れを理解する表
| 項目 | 説明 |
|---|---|
| Makefile.in の役割 | ビルドの元になるテンプレート。configure が実際の Makefile を作るときの土台になる |
| Makefile との違い | Makefile は実行用のビルド指示書。Makefile.in はその元になる雛型 |
| 生成元のファイル | 通常は Makefile.am や configure.ac などのファイルから作られる |
| 編集の仕方 | 直接 Makefile.in を編集するより Makefile.am を編集して再生成するのが基本 |
まとめ
makefile.in とは自動化されたビルドプロセスの中核を担うテンプレートファイルです。実際のビルドは configure によって環境に合わせて Makefile が作られ、Makefile がソフトウェアをコンパイルします。初心者はまず Makefile.in の役割と流れを理解し、焦らずに先達の作る仕組みを学ぶことが大切です。
makefile.inの同意語
- Makefile.in
- Autotools系のプロジェクトで使われる、Makefileを生成するための雛形テンプレートファイル。configureスクリプトがこのテンプレートを元に最終的なMakefileを作成します。
- Makefile.inファイル
- Makefile.inというファイル自体の名称。Autotools環境でMakefileを生成する元テンプレートとして機能します。
- Makefileテンプレート
- Makefileを作成する際の雛形や模板。中身には変数プレースホルダがあり、ビルド設定に合わせて置換されます。
- Makefileの雛形
- Makefileの基本形・見本。実際の最終Makefileはこの雛形を元に生成されます。
- テンプレートMakefile
- Makefileを生成する元となるテンプレートファイルの別表記。英語表記のバリエーションとして使われることがあります。
- Makefile.template
- 英語表記の同等ファイル名。Makefileを生成するためのテンプレートとして用いられることが多い名前。
- Autotools用Makefileテンプレート
- Autotools(autoconf/automake)を使うプロジェクトでのMakefileの雛形。自動生成されるMakefileの元になるテンプレートです。
makefile.inの対義語・反対語
- Makefile
- Makefileは、Makefile.inを雛形としてではなく、実際のビルドに使われる最終的なファイルの代表例です。対義語として最も一般的に用いられます。
- 実ファイル
- テンプレートであるMakefile.inに対して、現場で実際に使用される“実体”のファイルを指します。雛形と対になる概念です。
- 完成版Makefile
- テンプレートから整えられ、編集を終えた最終的なMakefile。ビルドに用いられる実用版の意味合いです。
- 最終出力ファイル
- Makefileの最終形として生成され、ビルドに適用される完成版のファイルを指します。
- 自動生成済みMakefile
- 自動ツールで作成されたMakefile。テンプレートであるMakefile.inの反対概念として位置づけられます。
- 手動編集版Makefile
- 自動生成ではなく手作業で編集・作成したMakefile。テンプレートからの派生だが人の手で仕上げられたものです。
- テンプレート不使用の実体
- テンプレート(雛形)を使わず実際に使われる実体ファイルという対義概念です。
- 自動生成後のファイル
- テンプレートから生成工程を経て生まれた後のファイルを指します。最終的なMakefileを含むことが多いです。
- 生成されたビルド設定ファイル
- ビルド設定を含むファイルが生成された状態を意味します。Makefile.inから派生して現れるファイルに近い概念です。
- 完成したビルド定義ファイル
- ビルド定義が完成して実際のビルドに使われる状態のファイル。
makefile.inの共起語
- Makefile.in
- configure が Makefile に置換する前の雛形ファイル。変数置換 @VAR@ が使われ、ビルドのルールが定義されています。
- Makefile
- 実際に make が解釈するビルド指示書。Makefile.in の置換結果として生成され、ビルドする対象や依存関係、インストール先などが記述されています。
- configure
- Autotools で生成される設定スクリプト。システム環境を検出し、Makefile.in などを環境に合わせて生成します。
- configure.ac
- Autoconf の入力ファイル。マクロを用いて configure スクリプトを生成する元データです。
- configure.in
- configure.ac の旧表記。基本的には同等の役割を持ちます。
- Makefile.am
- Automake の入力ファイル。どのプログラムをビルドするかなどの宣言を記述し、Makefile.in の生成元になります。
- automake
- Makefile.in を生成するツール。Automake マクロを解釈してビルドルールの雛形を作成します。
- autoconf
- configure スクリプトを生成するツール。configure.ac のマクロを展開して実行可能なスクリプトにします。
- aclocal
- M4 マクロを収集・管理するツール。autoconf/automake が参照するマクロの集約を行います。
- libtool
- ライブラリのビルドとリンクを抽象化するツール。共有ライブラリの作成やプラットフォーム差異の吸収を補助します。
- LT_INIT
- libtool を有効化するための初期化マクロ。Makefile.in 側で libtool を使えるように設定します。
- LT_CONFIG_LTLIBRARIES
- libtool の設定でライブラリターゲットを定義するマクロ。静的/共有ライブラリのビルドオプションを指定します。
- AM_INIT_AUTOMAKE
- Automake の初期化を行うマクロ。Automake を使ったビルド設定の準備をします。
- AM_SILENT_RULES
- ビルド時のコマンド出力を抑制する設定。ビルドログを見やすくします。
- AM_PROG_AR
- アーカイブ作成ツールを検出する Automake のマクロ。静的ライブラリ作成時に ar を探します。
- AC_CONFIG_HEADERS
- config.h.in を config.h に変換する設定を行うマクロ。ヘッダの設定を管理します。
- config.h.in
- config.h の雛形テンプレート。configure が実行時にこのテンプレートを元に config.h を作成します。
- config.h
- configure 実行後に生成されるヘッダファイル。ビルド時の定数や環境設定を格納します。
- config.status
- configure 実行後に生成・更新されるスクリプト。Makefile の再生成などを行います。
- config.cache
- configure の実行結果をキャッシュするファイル。再実行時の速度を向上させます。
- PKG_CONFIG
- pkg-config コマンドの実行ファイル名。ライブラリ情報の取得に使われます。
- PKG_CONFIG_PATH
- pkg-config が検索するパスを指定する環境変数。
- PKG_CONFIG_LIBDIR
- pkg-config がライブラリ情報を参照するディレクトリを指定します。
- CPPFLAGS
- プリプロセッサ用のフラグ。ヘッダの検索パスや機能の有無を制御します。
- CFLAGS
- C コンパイラ用のフラグ。最適化レベルや警告の設定などを指定します。
- CXXFLAGS
- C++ コンパイラ用のフラグ。
- LDFLAGS
- リンカ用のフラグ。ライブラリの探索パスやリンク時のオプションを設定します。
- LIBS
- リンク時に追加するライブラリのリスト。外部ライブラリとの結合を指定します。
- prefix
- インストール先の基準ディレクトリ。通常は /usr などがデフォルトです。
- exec_prefix
- 実行ファイルのインストール先プレフィックス。prefix の下に配置されます。
- bindir
- 実行可能ファイルをインストールするディレクトリ。
- libdir
- ライブラリをインストールするディレクトリ。
- includedir
- ヘッダファイルをインストールするディレクトリ。
- datadir
- データファイルをインストールするディレクトリ。
- sharedstatedir
- 共有状態ファイルを置くディレクトリ。
- top_srcdir
- ビルド元のソースツリーのトップディレクトリ。
- top_builddir
- ビルド時のトップディレクトリ(多段ビルドで使用)。
- srcdir
- ソースファイルが格納されているディレクトリ。
- VPATH
- make がソースを探す追加の検索パス。
- MAKEFLAGS
- make 実行時の共通フラグ。
- MAKELEVEL
- 現在の make の階層レベルを示す値。
- ACLOCAL_FLAGS
- aclocal の追加オプション。
- config.sub
- ホスト/ターゲットのタイプ判定を行うスクリプト。
- config.guess
- ホストの識別情報を推測するスクリプト。
- depcomp
- 依存関係の生成を支援する補助スクリプト。
- AR
- アーカイブ作成ツールの実行ファイル名(通常は ar)。
- CC
- C コンパイラの実行ファイル名。
- CXX
- C++ コンパイラの実行ファイル名。
- RANLIB
- アーカイブインデックス生成ツールの実行ファイル名。
- LD
- リンカの実行ファイル名。
- M4
- Autotools で使われるマクロを処理する m4 の実行ファイル名。
- AC_HELP_STRING
- configure のヘルプメッセージのテンプレートを定義するマクロ。
- AC_OUTPUT
- configure が作成する出力ファイルの指示を行うマクロ。
makefile.inの関連用語
- Makefile.in
- configure が Makefile に変換する前のテンプレートファイル。@VAR@ の置換で実際の値を埋め込み、ビルド設定を作成します。
- Makefile
- 実際に make が読み込むファイル。ターゲット、依存関係、ビルドルールが記述されています。
- Makefile.am
- Automake の入力ファイル。ここにビルドルールを記述し、Automake が Makefile.in を生成します。
- Automake
- GNU Autotools の一部。Makefile.am から Makefile.in を作成するツールです。
- Autoconf
- GNU Autotools のもう一方の柱。configure スクリプトを生成するツールです。
- configure
- ソースコードのビルド環境を整えるスクリプト。システムの特徴を検出して Makefile.in を Makefile に変換します。
- configure.ac
- Autoconf の入力ファイル。AC_INIT などのマクロを記述します。
- AC_INIT
- パッケージ名やバージョンなどを初期化する Autoconf のマクロです。
- AC_CONFIG_FILES
- configure が処理する出力ファイルを宣言するマクロ。
- AC_OUTPUT
- 生成する出力ファイルを列挙するマクロ。
- AC_CONFIG_HEADERS
- config.h を生成する設定を宣言するマクロ。
- config.h.in
- config.h の雛形ファイル。configure が config.h を作成する際の元ファイルです。
- config.h
- configure 実行後に生成されるヘッダファイル。機能フラグをコンパイル時に切り替えます。
- AM_INIT_AUTOMAKE
- Automake の初期化を宣言するマクロ。Automake を有効化します。
- AM_CPPFLAGS
- Automake が CPPFLAGS を受け継ぐための変数。プリプロセッサフラグを指定します。
- CPPFLAGS
- プリプロセッサのフラグ。ヘッダ検索パスなどを設定します。
- CFLAGS
- C コンパイラ用のフラグ。最適化レベルや警告の制御などを設定します。
- AM_CFLAGS
- Automake 用の CFLAGS の補足設定。
- LDFLAGS
- リンク時のフラグ。ライブラリの場所指定などを行います。
- AM_LDFLAGS
- Automake 用の LDFLAGS の補足設定。
- PKG_CHECK_MODULES
- pkg-config を使って外部ライブラリの有無を確認する Autotools のマクロ。
- PKG_CONFIG
- pkg-config の設定を有効にするための変数やツール。
- LIBTOOL
- ライブラリを作成・管理するためのツール。クロスプラットフォーム対応を支援します。
- libtool
- libtool の実行ファイル。静的/動的ライブラリの作成を仲介します。
- libtoolize
- libtool のインフラを準備・再生成するツール。
- DESTDIR
- パッケージを仮想的なルートにインストールするためのディレクトリ。
- PREFIX
- インストール先の基本ディレクトリ。通常は /usr などに設定します。
- DISTCHECK_CONFIG_FLAGS
- make distcheck 実行時の configure オプションを設定する変数。
- INSTALL
- install ターゲット。ビルド成果物をシステムの適切な場所へ配置します。
- all
- デフォルトのビルドターゲット。通常は全てをビルドします。
- install
- ビルド成果物をインストールするターゲット。
- clean
- ビルド過程で作成した中間ファイルを削除するターゲット。
- @VAR@
- Makefile.in 内のプレースホルダ。configure が実際の値で置換します。



















