Kedua file ini sebagian besar terlihat dalam proyek open source.
Untuk apa itu, dan bagaimana cara kerjanya?
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
?.in
ekstensi berarti bahwa masukan itu untukconfigure
memijat, bukan file akhir yang harus digunakan (misalnya denganmake
). 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
README.md
configure.ac
src / Makefile.am
src / main.c
Pemakaian
Output ini:
Catatan
autoreconf --install
menghasilkan beberapa file templat yang harus dilacak oleh Git, termasukMakefile.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.
sumber
DEVELOPER berjalan
autoconf
danautomake
: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 )
INSTALLER berjalan
configure
,make
dansudo make install
:PETA INPUT / OUTPUT
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:
Contoh:
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.)
sumber
referensi :
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:
sumber