Jawaban:
Makefile.am
adalah file programmer-didefinisikan dan digunakan oleh automake
untuk menghasilkan Makefile.in
berkas (yang .am
berdiri untuk sebuah uto m ake). The configure
Script biasanya terlihat di tarball source akan menggunakan Makefile.in
untuk menghasilkan Makefile
.
The configure
Script itu sendiri dihasilkan dari file programmer-didefinisikan bernama baik configure.ac
atau configure.in
(usang). Saya lebih suka .ac
(untuk sebuah uto c onf) karena membedakan dari yang dihasilkan Makefile.in
file dan cara yang saya dapat memiliki aturan seperti make dist-clean
yang berjalan rm -f *.in
. Karena ini adalah file yang dihasilkan, biasanya tidak disimpan dalam sistem revisi seperti Git, SVN, Mercurial atau CVS, melainkan .ac
file tersebut.
Baca lebih lanjut tentang GNU Autotools . Baca tentang make
dan Makefile
pertama, kemudian belajar tentang automake
, autoconf
, libtool
, dll
.in
ekstensi berarti bahwa masukan itu untuk configure
memijat, bukan file akhir yang harus digunakan (misalnya dengan make
). Jika Anda penasaran mengapa ini tampaknya "konyol" rumit, coba baca: stackoverflow.com/a/26832773/939557 Hari-hari ini dengan GitHub, dll. Menjadi saluran distribusi umum yang beberapa asumsi autoconf mogok: orang memperoleh sumber langsung dari alat kontrol kode sumber, daripada menggunakan tarball distribusi sumber yang dibuat oleh pengelola.
Contoh sederhana
Tanpa malu-malu diadaptasi dari: http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html dan diuji di 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;
}
Pemakaian
autoreconf --install
mkdir build
cd build
../configure
make
sudo make install
autoconf_hello_world
sudo make uninstall
Output ini:
Hello world from automake_hello_world 1.0
Catatan
autoreconf --install
menghasilkan beberapa file templat yang harus dilacak oleh Git, termasuk Makefile.in
. Itu hanya perlu dijalankan pertama kali.
make install
menginstal:
/usr/local/bin
README.md
untuk /usr/local/share/doc/automake_hello_world
Di GitHub, Anda bisa mencobanya.
autoconf
dan automake
:1) autoconf - membuat konfigurasi shippable skrip
(yang nantinya akan dijalankan oleh pemasang untuk membuat Makefile )
2) automake - membuat file data Makefile.in shippable
(yang mengkonfigurasi nantinya akan dibaca untuk membuat Makefile )
configure
, make
dan 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
Notasi di bawah ini kira-kira: input -> program -> output
DEVELOPER menjalankan ini:
configure.ac -> autoconf -> configure (script) --- (*. ac = a uto c onf)
configure.in -> autoconf -> configure (script) --- ( configure.in
disusutkan Gunakan configure.ac.)
Makefile.am -> automake -> Makefile.in ----------- (*. Am = a uto m ake)
INSTALLER menjalankan ini:
Makefile.in -> configure -> Makefile (*. Di = di put file)
Makefile -> make ----------> (menempatkan perangkat lunak baru di unduhan Anda atau direktori sementara)
Makefile -> make install -> (menempatkan perangkat lunak baru di direktori sistem)
" autoconf adalah paket extensible dari makro M4 yang menghasilkan skrip shell untuk secara otomatis mengkonfigurasi paket kode sumber perangkat lunak. Skrip ini dapat mengadaptasi paket ke berbagai jenis sistem mirip-UNIX tanpa intervensi pengguna manual. Autoconf membuat skrip konfigurasi untuk paket dari sebuah file templat yang mencantumkan fitur sistem operasi yang dapat digunakan paket, dalam bentuk panggilan makro M4. "
" automake adalah alat untuk secara otomatis menghasilkan file Makefile.in yang sesuai dengan Standar Pengkodean GNU. Automake membutuhkan penggunaan Autoconf."
Manual:
Tutorial online gratis:
Configure.ac utama yang digunakan untuk membangun LibreOffice adalah lebih dari 12k baris kode, (tetapi ada juga 57 file configure.ac lainnya dalam subfolder.)
Dari ini konfigurasi yang saya hasilkan adalah lebih dari 41k baris kode.
Dan sementara Makefile.in dan Makefile sama-sama hanya 493 baris kode. (Tapi, ada juga 768 Makefile.in di subfolder lagi.)
Makefile.am - file input pengguna untuk diotomatisasi
configure.in - file input pengguna ke autoconf
autoconf menghasilkan configure dari configure.in
automate gererates Makefile.in dari Makefile.am
configure menghasilkan Makefile dari Makefile.in
Misalnya:
$]
configure.in Makefile.in
$] sudo autoconf
configure configure.in Makefile.in ...
$] sudo ./configure
Makefile Makefile.in
.in
?