Bu iki dosya çoğunlukla açık kaynaklı projelerde görülür.
Ne işe yarıyorlar ve nasıl çalışıyorlar?
Bu iki dosya çoğunlukla açık kaynaklı projelerde görülür.
Ne işe yarıyorlar ve nasıl çalışıyorlar?
Yanıtlar:
Makefile.am
Bir programcı tarafından tanımlanan bir dosya tarafından kullanılan, automake
oluşturmak için Makefile.in
dosya ( .am
yerini tutan bir uto m AKE). configure
Tipik kaynak paketler görülen komut dosyası kullanacak Makefile.in
bir oluşturmak için Makefile
.
configure
Komut kendisi ya da adlandırılan bir programcı tanımlanmış dosyasından oluşturulur configure.ac
ya da configure.in
(kaldırıldı). Ben .ac
(oluşturulan bir uto c onf için) onu oluşturulan Makefile.in
dosyalardan farklılaştırır ve bu şekilde make dist-clean
hangi çalışır gibi kuralları olabilir tercih ederim rm -f *.in
. Oluşturulan bir dosya olduğundan, genellikle Git, SVN, Mercurial veya CVS gibi bir revizyon sisteminde depolanmaz, .ac
dosya olur.
GNU Autotools hakkında daha fazla bilgi edinin . Hakkında okuyun make
ve Makefile
önce, sonra hakkında bilgi automake
, autoconf
, libtool
vb
.in
İçin 's giriş uzatma aracı configure
, kullanılması gereken bir nihai dosyayı masaj (örn ile make
). Bunun neden "gülünç" karmaşık göründüğünü merak ediyorsanız, okumaya çalışın: stackoverflow.com/a/26832773/939557 GitHub, vb. İle ortak bir dağıtım kanalı haline gelen bu günlerde bazı autoconf varsayımları bozuluyor: insanlar kaynağı koruyucular tarafından oluşturulan bir kaynak dağıtım tarball kullanmak yerine doğrudan kaynak kodu kontrol aracından.
Basit örnek
Utanmadan uyarlanmış: http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html ve Ubuntu 14.04 Automake 1.14.1'de test edilmiştir.
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;
}
kullanım
autoreconf --install
mkdir build
cd build
../configure
make
sudo make install
autoconf_hello_world
sudo make uninstall
Bu çıktılar:
Hello world from automake_hello_world 1.0
notlar
autoreconf --install
Git tarafından izlenmesi gereken birkaç şablon dosyası oluşturur Makefile.in
. Sadece ilk kez çalıştırılması gerekiyor.
make install
yükler:
/usr/local/bin
README.md
için /usr/local/share/doc/automake_hello_world
Denemek için GitHub'da .
autoconf
ve automake
:1) autoconf - gönderilebilir yapılandırma komut dosyası oluşturur
(yükleyici daha sonra Makefile yapmak için çalışacaktır )
2) automake - shippable Makefile.in veri dosyasını oluşturur
( yapılandırmak daha sonra Makefile yapmak için okunacaktır )
configure
, make
ve 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
Aşağıdaki gösterim kabaca: girişler -> programlar -> çıkışlar
DEVELOPER bunları çalıştırır:
configure.ac -> autoconf -> configure (script) --- (*. ac = a uto c onf)
configure.in -> autoconf -> configure (script) --- ( configure.in
amortismana tabi kullan)
Makefile.am -> automake -> Makefile.in ----------- (*. Am = a uto m ake)
INSTALLER şu şekilde çalışır:
Makefile.in -> configure -> Makefile (*. İnç ) = içinde koymak dosyası)
Makefile -> yapmak ----------> (sizin indirme veya geçici dizinde koyar yeni yazılım)
Makefile -> make install -> (sistem dizinlerine yeni yazılımlar koyar)
" autoconf , yazılım kaynak kodu paketlerini otomatik olarak yapılandırmak için kabuk komut dosyaları üreten, genişletilebilir bir M4 makro paketidir. Bu komut dosyaları, manuel kullanıcı müdahalesi olmadan paketleri birçok UNIX benzeri sisteme uyarlayabilir. Autoconf, paketin kullanabileceği işletim sistemi özelliklerini M4 makro çağrıları şeklinde listeleyen şablon dosyası. "
" automake otomatik olarak GNU Kodlama Standartları ile uyumlu Makefile.in dosyaları oluşturmak için bir araçtır. Automake Autoconf kullanımını gerektirir."
Kılavuzlar:
Ücretsiz çevrimiçi eğitimler:
LibreOffice'i oluşturmak için kullanılan ana configure.ac , 12k kod satırının üzerindedir (ancak alt klasörlerde 57 tane daha configure.ac dosyası vardır.)
Bu benim oluşturulan yapılandırma 41k kod satırı üzerinde.
Ve iken Makefile.in ve Makefile kodunun hem sadece 493 çizgilerdir. (Ama alt klasörlerde 768 tane daha Makefile var.)
referans :
Makefile.am - otomatik yapmak için bir kullanıcı giriş dosyası
configure.in - autoconf'a bir kullanıcı giriş dosyası
autoconf configure.in dosyasından config oluşturur.
automake Makefile.in gelen Makefile.in gererates
configure Makefile.in dan Makefile üretir
Örneğin:
$]
configure.in Makefile.in
$] sudo autoconf
configure configure.in Makefile.in ...
$] sudo ./configure
Makefile Makefile.in
.in
?