これら2つのファイルは主にオープンソースプロジェクトで見られます。
彼らは何のためにあり、そして彼らはどのように働いていますか?
Makefile.am
はプログラマー定義ファイルで、automake
によってMakefile.in
ファイルの生成に使用されます(.am
はaを意味しますutomアケ)。ソースのtarballによく見られるconfigure
スクリプトは、Makefile
を生成するためにMakefile.in
を使用します。
configure
script 自体は、configure.ac
またはconfigure.in
(非推奨)のいずれかという名前のプログラマー定義ファイルから生成されます。 .ac
(autoconfの場合)が区別されます。生成されたMakefile.in
ファイルからそしてそのように私はmake dist-clean
を実行するrm -f *.in
のような規則を持つことができます。これは生成されたファイルなので、通常Git、SVN、Mercurial、CVSなどのリビジョンシステムに保存されるのではなく、.ac
ファイルに保存されます。
GNU Autotools を読んでください。まず make
と Makefile
について読み、次に automake
、 autoconf
、 libtool
について読んでください。など.
簡単な例
恥知らずからから適合: http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html とUbuntu 14.04 Automake 1.14.1でテスト。
Makefile.am
SUBDIRS = src
dist_doc_DATA = README.md
README.md
Some doc.
configure.ac
AC_INIT([automake_hello_world], [1.0], [[email protected]])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
src/Makefile
])
AC_OUTPUT
src/Makefile.am
bin_PROGRAMS = autotools_hello_world
autotools_hello_world_SOURCES = main.c
src/main.c
#include <config.h>
#include <stdio.h>
int main (void) {
puts ("Hello world from " PACKAGE_STRING);
return 0;
}
使い方
autoreconf --install
mkdir build
cd build
../configure
make
Sudo make install
autoconf_hello_world
Sudo make uninstall
これは出力します:
Hello world from automake_hello_world 1.0
注意事項
autoreconf --install
は、Makefile.in
を含む、Gitによって追跡されるべきいくつかのテンプレートファイルを生成します。初めて実行するだけです。
make install
は以下をインストールします。
/usr/local/bin
へのバイナリREADME.md
から/usr/local/share/doc/automake_hello_world
GitHubでは 試してみることができます。
参照 :
Makefile.am - 自動生成するためのユーザ入力ファイル
configure.in - autoconfへのユーザー入力ファイル
autoconfはconfigure.inからconfigureを生成します。
automakeはMakefile.amからMakefile.inを作成します
configureはMakefile.inからMakefileを生成します
例:
$]
configure.in Makefile.in
$] Sudo autoconf
configure configure.in Makefile.in ...
$] Sudo ./configure
Makefile Makefile.in
DEVELOPERはこれらを実行します:
1)autoconf - shippableを作成しますconfigureスクリプト(インストーラはrunしてMakefileを作成します)
2)automake - shippableを作成しますMakefile.in(これはconfigure後で作成しますread作成するにはMakefile)
INSTALLERはこれらを実行します。
./configure # Creates Makefile (from Makefile.in).
make # Creates the application (from the Makefile just created).
Sudo make install # Installs the application
# Often, by default its files are installed into /usr/local
入力 - > PROGRAMS - >出力:
DEVELOPERはこれらを実行します:
configure.in - > autoconf - > configure(スクリプト) configure .inは廃止予定です。configure.acを使用してください)
configure.ac - > autoconf - > configure(スクリプト)---(* .ac = a uto c onf)
Makefile.am - > automake - > Makefile.in -----------(* .am = a uto m ake)
INSTALLERはこれらを実行します。
Makefile.in - > configure - >Makefile(* .in = in putファイル)
Makefile - > make - >(ダウンロードまたは一時ディレクトリにある新しいソフトウェア)
Makefile - > make install - >(システムディレクトリに新しいソフトウェアを置きます)
"Autoconfは、ソフトウェアのソースコードパッケージを自動的に設定するためのシェルスクリプトを生成するM4マクロの拡張可能なパッケージです。これらのスクリプトは、手動のユーザー介入なしにパッケージをUNIXのようなシステムに適応できます。テンプレートファイルのパッケージの設定スクリプトで、そのパッケージで使用できるオペレーティングシステムの機能がM4マクロ呼び出しの形式で一覧表示されます。」
"AutomakeはGNU Coding Standardsに準拠したMakefile.inファイルを自動的に生成するためのツールです。AutomakeはAutoconfの使用を必要とします。"
マニュアル:
興味深い事実:
LibreOfficeをビルドするのに使用される主なconfigure.acは、12,000行を超えるコードです(ただし、サブフォルダーには57の他のconfigure.acファイルもあります)。
これから生成したconfigureは41k行を超えるコードです。
Makefile.inとMakefileはどちらも493行のコードにすぎません。(ただし、さらに768個のMakefile.inがあります。サブフォルダーにあります。