回答:
Makefile.am
プログラマーが定義したファイルでありautomake
、Makefile.in
ファイルの生成に使用されます(.am
略称は uto m ake)。configure
通常、ソースのtarballに見スクリプトが使用されますMakefile.in
生成しますMakefile
。
configure
スクリプト自体はどちらかの名前のプログラマ定義ファイルから生成されるconfigure.ac
かconfigure.in
(非推奨します)。私は好む.ac
(のため宇土Cそれが発生したからそれを区別するため、ONF)のファイルと私のようなルール持つことができる方法の実行を。これは生成されたファイルであるため、通常はGit、SVN、Mercurial、CVSなどのリビジョンシステムには保存されず、ファイルが保存されます。Makefile.in
make dist-clean
rm -f *.in
.ac
GNU Autotoolsの詳細を読んでください。記事を読むmake
と、Makefile
まず、次いで約学びautomake
、autoconf
、libtool
、など
.in
拡張手段のためのそれの入力そのconfigure
マッサージ、(例えばして使用する必要がありません最終的なファイルへmake
)。これは「途方もなく」複雑なようだ理由として、あなたしているが、好奇心旺盛な場合は、読んでみてください:stackoverflow.com/a/26832773/939557 のGitHubでこれらの日などの一般的な流通チャネルのautoconfの仮定の一部を壊しているになってきて:人が取得していますメンテナが作成したソース配布のtarballを使用するのではなく、ソースコード管理ツールから直接ソースを取得します。
簡単な例
恥知らずに適応: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], [bug-automake@gnu.org])
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
を含む、Gitで追跡する必要のあるいくつかのテンプレートファイルを生成しますMakefile.in
。初めて実行する必要があるだけです。
make install
インストール:
/usr/local/bin
README.md
に /usr/local/share/doc/automake_hello_world
GitHubで試してみてください。
autoconf
とautomake
:1)autoconf- 出荷可能な構成スクリプトを作成します
(インストーラーは後で実行してMakefileを作成します)
2)automake- 出荷可能なMakefile.inデータファイルを作成します
(configureは後でMakefileを作成するために読み取ります)
configure
、make
そしてsudo make install
:./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
以下の表記はおおまかに:入力->プログラム->出力
DEVELOPERはこれらを実行します。
configure.ac-> autoconf- > configure(script)---(*。ac = a uto c onf)
configure.in-> autoconf- > configure(script)---(configure.in
depreciated。Use configure.ac)
Makefile.am-> automake- > Makefile.in -----------(*。am = a uto m ake)
INSTALLERはこれらを実行します。
Makefile.in - > の設定 - > Makefileの(。* 中 = でプット・ファイル)
Makefile- > make ---------->(ダウンロードまたは一時ディレクトリに新しいソフトウェアを置く)
Makefile- > make install ->(システムディレクトリに新しいソフトウェアを置く)
" autoconfは、ソフトウェアソースコードパッケージを自動的に構成するシェルスクリプトを生成するM4マクロの拡張可能なパッケージです。これらのスクリプトは、手動のユーザー介入なしで、パッケージを多くの種類のUNIXライクなシステムに適合させることができます。Autoconfは、パッケージの構成スクリプトをパッケージが使用できるオペレーティングシステム機能をM4マクロ呼び出しの形式でリストしたテンプレートファイル。」
" automakeは、GNUコーディング標準に準拠したMakefile.inファイルを自動的に生成するためのツールです。Automakeでは、Autoconfを使用する必要があります。"
マニュアル:
無料のオンラインチュートリアル:
LibreOfficeのビルドに使用される主なconfigure.acは、12,000行を超えるコードです(ただし、サブフォルダーには他に57個のconfigure.acファイルがあります)。
これから、私の生成された構成は41k行を超えるコードです。
そして、しながら、Makefile.inとMakefileのコードの両方の唯一の493行があります。(しかし、サブフォルダーにはさらに768個のMakefile.inがあります。)
参照:
Makefile.am-automakeへのユーザー入力ファイル
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
.in
略ですか?