これらの2つのファイルは、主にオープンソースプロジェクトで見られます。
それらは何のためにあり、どのように機能しますか?
Makefile.am
はプログラマー定義のファイルであり、ファイルautomake
を生成するために使用されMakefile.in
ます(uto makeの略.am
)。ソースtarballで通常見られるスクリプトは、を使用してを生成します。configure
Makefile.in
Makefile
configure
スクリプト自体は、または(非推奨)という名前のプログラマー定義のファイルから生成されconfigure.ac
ますconfigure.in
。生成されたファイルと区別され、実行するルールなどのルールを設定できる.ac
ため、 ( uto c onfの場合)私は好みます。これは生成されたファイルであるため、通常、Git、SVN、Mercurial、CVSなどのリビジョンシステムに保存されるのではなく、ファイルが保存されます。Makefile.in
make dist-clean
rm -f *.in
.ac
GNUAutotoolsの詳細をお読みください。について読んでmake
、最初に、、、などMakefile
について学びます。automake
autoconf
libtool
簡単な例
http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.htmlから恥知らずに適応され、Ubuntu 14.04Automake1.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
autotools_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
: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
減価償却済み。configure.acを使用)
Makefile.am-> automake- > Makefile.in -----------(*。am = a uto m ake)
INSTALLERはこれらを実行します:
Makefile.in-> configure- > Makefile(*。in = in put file)
Makefile- > make ---------->(ダウンロードまたは一時ディレクトリに新しいソフトウェアを配置します)
Makefile- > make install ->(システムディレクトリに新しいソフトウェアを配置します)
「autoconfは、ソフトウェアソースコードパッケージを自動的に構成するシェルスクリプトを生成するM4マクロの拡張可能なパッケージです。これらのスクリプトは、ユーザーの手動介入なしに、パッケージをさまざまな種類のUNIXライクなシステムに適合させることができます。パッケージが使用できるオペレーティングシステムの機能をM4マクロ呼び出しの形式でリストしたテンプレートファイル。」
「automakeは、GNUコーディング標準に準拠したMakefile.inファイルを自動的に生成するためのツールです。AutomakeではAutoconfを使用する必要があります。」
マニュアル:
GNU AutoTools(このようなものに関する最も信頼のおけるマニュアル)
m4(autoconfで使用)
無料のオンラインチュートリアル:
LibreOfficeのビルドに使用されるメインのconfigure.acは、12,000行を超えるコードです(ただし、サブフォルダーには他に57個のconfigure.acファイルもあります)。
これから、生成された構成は41k行を超えるコードです。
また、Makefile.inとMakefileはどちらもわずか493行のコードです。(ただし、サブフォルダーにはさらに768個のMakefile.inがあります。)
参照:
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