398

これらの2つのファイルは、主にオープンソースプロジェクトで見られます。

それらは何のためにあり、どのように機能しますか?

4

4 に答える 4

429

Makefile.amはプログラマー定義のファイルであり、ファイルautomakeを生成するために使用されMakefile.inます(uto make.am)。ソースtarballで通常見られるスクリプトは、を使用してを生成します。configureMakefile.inMakefile

configureスクリプト自体は、または(非推奨)という名前のプログラマー定義のファイルから生成されconfigure.acますconfigure.in。生成されたファイルと区別され、実行するルールなどのルールを設定できる.acため ( uto c onfの場合)私は好みます。これは生成されたファイルであるため、通常、Git、SVN、Mercurial、CVSなどのリビジョンシステムに保存されるのではなく、ファイルが保存されます。Makefile.inmake dist-cleanrm -f *.in.ac

GNUAutotoolsの詳細をお読みください。について読んでmake、最初に、、、などMakefileについて学びます。automakeautoconflibtool

于 2010-03-28T03:53:58.743 に答える
67

簡単な例

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で試してみてください。

于 2015-05-28T16:17:05.767 に答える
34

DEVELOPERが実行autoconfされ、automake

  1. autoconf-出荷可能なconfigureスクリプト を作成します
    (インストーラーは後でMakefileを作成するために実行します)
  1. automake-出荷可能なMakefile.inデータファイル を作成します
    configureは後でMakefileを作成するために読み取ります)

INSTALLERが実行されconfigure、:makesudo 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を使用する必要があります。」

マニュアル:

無料のオンラインチュートリアル:


例:

LibreOfficeのビルドに使用されるメインのconfigure.acは、12,000行を超えるコードです(ただし、サブフォルダーには他に57個のconfigure.acファイルもあります)。

これから、生成された構成は41k行を超えるコードです。

また、Makefile.inMakefileはどちらもわずか493行のコードです。(ただし、サブフォルダーにはさらに768個のMakefile.inがあります。)

于 2018-02-12T17:47:43.457 に答える
19

参照

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
于 2015-07-07T17:11:57.070 に答える