?????????????configure.in???????Щ???壬??Щ??autoconf????????????????????????????????????????shell?????autoconf ?????????????????????????????configure????????configure??????????autoconf???У????????е?????У???????????????
?????????configure?????????????autoconf??????????????????????aclocal?????????????aclocal.m4??aclocal????configure.in?????????????????aclocal.m4?????aclocal?????perl ?????????????????“aclocal - create aclocal.m4 by scanning configure.ac”??
????autoconf??configure.in????о?????????????????????????????д???configure??autoconf???GNU m4????????????aclocal.m4??????configure?????
????m4????????????????????????????????????????????????????????????????????????????????m4?????Щ?????????????????????????????????????????????????????m4??????????????????????????????????????????
????4?????Makefile.am?????????$ vi Makefile.am ????????:
????AUTOMAKE_OPTIONS=foreign
????bin_PROGRAMS=helloworld
????helloworldhelloworld_SOURCES=helloworld.c
????automake???????д??Linux Makefile.am?????????Makefile.in??Makefile.am?ж??????????????automake???????????????磬??bin_PROGRAMS?????±???????????????ɡ?
????5??????automake????
????$ automake --add-missing
????configure.in: installing `./install-sh'
????configure.in: installing `./mkinstalldirs'
????configure.in: installing `./missing'
????Makefile.am: installing `./depcomp'
????automake?????Makefile.am????????Щ??????????????Linux Makefile.in??
????6?????configure????Linux Makefile
$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands
$ ls -l Makefile
-rw-rw-r-- 1 yutao yutao 15035 Oct 15 10:40 Makefile
?????????????????Makefile??????????????
????7?????Linux Makefile???????
????$ makeif gcc -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DPACKAGE="helloworld" -DVERSION="1.0"
????-I. -I. -g -O2 -MT helloworld.o -MD -MP -MF ".deps/helloworld.Tpo"
????-c -o helloworld.o `test -f 'helloworld.c' || echo './'`helloworld.c;
????then mv -f ".deps/helloworld.Tpo" ".deps/helloworld.Po";
????else rm -f ".deps/helloworld.Tpo"; exit 1;
????figcc -g -O2 -o helloworld helloworld.o  ????helloworld
????$ ./helloworld Hello?? Linux World!
????????helloworld???????????????????????????????????????????????????????helloworld???????????????????Щ??????make??????make clean??make install??make dist????????????????????Ч?????о???Σ???????д?????????Linux Makefile???????????????????
??????????????
??????????????????????????????Щ?????????
????1?? autoscan
????autoscan????????????????????configure.scan??????autoscan????????????????????????????ò???????????autoscan?????????????????autoscan???????????????е?????????????configure.scan?????
????2?? configure.scan
????configure.scan??????????????????????涼???Щ???塣????????????????configure.in
????3?? aclocal
????aclocal?????perl ???????aclocal????configure.in?????????????????aclocal.m4?????aclocal????????“aclocal - create aclocal.m4 by scanning configure.ac”??
????4?? autoconf
????autoconf??????????configure??????configure?????????????????????????????????????????????????????????????????????Linux Makefile?????????????????????????????????????????????
????configure.in????????????Щ????Щ????autoconf ????????????????????????????????????????shell?????configure.in????е????????й漲????????????????к??????????????AC_INIT???AC_OUTPUT??
??????configure.ini?У?#?????????????????????????????AC_INIT(FILE) ??????????????????????·????AM_INIT_AUTOMAKE(PACKAGE?? VERSION)
?????????????????????????????????????????????????汾???PACKAGE??????????????VERSION??汾??????????make dist?????????????????????????helloworld-1.0.tar.gz????????а????????ж????????????????汾???
????AC_PROG_CC???????????????C???????? AC_OUTPUT(FILE)?????????????????Makefile????????????????automake??????????????????????Щ?????????????aclocal ????????????????????aclocal?????????aclocal.m4?????
??????????configure.in??aclocal.m4 ?????????????????????autoconf??????configure??????
????5?? Makefile.am
????Linux Makefile.am??????????Makefile.in?????????????д??Makefile.am?ж??????Щ?????AUTOMAKE_OPTIONS ?????automake?????????automake?????????????????????GNU?????????????????????????AUTHORS??ChangeLog??NEWS?????????????????ó?foreign???automake?????????????????????顣
????bin_PROGRAMS????????????????????????????????????????????????????????????????????????????????? helloworld_SOURCES ????????????“helloworld”?????????????
??????????????????????????????????????????????????? helloworld.h??helloworld.c?????д??helloworld_SOURCES= helloworld.h helloworld.c?????????bin_PROGRAMS????????????????????????????????????????????filename_SOURCES??
????6?? automake
???????????automake --add-missing??????Makefile.in?????--add-missing???????“add missing standard files to package”????????automake?????????????????????????Щ???????????automake??????????Makefile.in????????GNU Makefile??????????????????????configure???shell ??????????????? Makefile ??????
????7?? Linux Makefile
?????????GNU Makefiel??????Makefile?У????????Щ??????????????????make????Makefile????????????????????????????????????make clean?????ε?make????????????object?????????“.o”???????????????????
????make install???????????????????????????У?????/usr/local/bin????make dist????????????????????distribution package?????????????????????????????????????tar.gz??????????????????????????????????????????????????????????“PACKAGE-VERSION.tar.gz”???????PACKAGE??VERSION??????????configure.in?ж????AM_INIT_AUTOMAKE(PACKAGE?? VERSION)??make distcheck????????????????????в????飬???????????????????????????????????????????????????configure???????????make????????????????????????????????????????????????
????helloworld-1.0.tar.gz is ready for distribution make distclean ????make clean?????????configure?????????????????????Makefile??
?????塢??????
???????????????????????????????????????????????GNU??????Makefile?????????????????????????д???????????????????Makefile???????ο??Щ????????????е?configure.in??Makefile.am????????磺?????????sqlite?????????cppunit.