¹«Ë¾µÄÏîÄ¿¼ÈʹÓÃÊÖдµÄmakefile£¬Ò²Ê¹ÓÃautomake£¬Ã»ÓÐͳһµÄ¹æ¶¨£¬Ò»Ö±ÊǰѱðÈ˵ÄmakefileÎļþÄùýÀ´£¬¸Ä¸ÄÔÙÓá£×î½üÓпգ¬×ÐϸÁ˽âÁËÒ»ÏÂmakefileºÍautomake£¬·¢ÏÖmakefileдÆðÀ´Âé·³£¬automake¼òµ¥¶àÁË£¬ÓÚÊǽ«automakeµÄÓ÷¨ÕûÀíÁËһϣ¬×÷ΪÒÔºóµÄ²Î¿¼
Õû¸ö¹ý³ÌµÄ²½ÖèÈçÏ£º
1. ÔÚ´æ·ÅÔ´´úÂëµÄĿ¼ÏÂÖ´ÐÐautoscanÃüÁîÉú³Éconfigure.scanÎļþ¡£
2. ½«configure.scanÎļþ¸ÄÃûΪconfigure.in»òÕßconfigure.ac£¬²¢¶ÔÆäĬÈÏÅäÖýøÐÐÐ޸ģ¬ÐÞ¸ÄÈçÏ£º
Configure.inÎļþ£º
# Process this file with Autoconf to produce a configure script.
AC_INIT(Main.cpp) #Ö¸¶¨mainº¯ÊýËùÔÚµÄÎļþ
AM_INIT_AUTOMAKE(hello, 1.0) #Ö¸¶¨³ÌÐòÃû³ÆºÍ°æ±¾
# Checks for programs.
#¼ì²é¿ÉÓõıàÒëÆ÷
AC_PROG_CC #CÓïÑÔ±àÒëÆ÷
AC_PROG_CPP #C++±àÒëÆ÷
AC_PROG_CXX
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT(Makefile)
3. Ö´ÐÐaclocal¡¢autoconfÁ½¸öÃüÁ·Ö±ðÉú³Éaclocal.m4¡¢configureÎļþ¡£
4. ´´½¨Ò»¸öÃûΪMakefile.amµÄÎļþ£¬²¢ÊäÈëÏàÓ¦µÄÄÚÈÝ¡£
Makefile.amÎļþ£º
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=helloworld
helloworld_SOURCES=helloworld.c
5. Ö´ÐÐautomake --add-missing£¬Ëü¸ù¾ÝMakefile.amÎļþ£¬Éú³ÉMakefile.in¡£
6. Ö´ÐÐ./configure½Å±¾Îļþ£¬Ëü¸ù¾ÝMakefile.inÎļþ£¬Éú³É×îÖÕµÄMakefileÎļþ¡£
ͨ¹ýÒÔÉϲ½Ö裬ÔÚÔ´´úÂëËùÔÚĿ¼ÏÂ×Ô¶¯Éú³ÉÁËMakefileÎļþ¡£
Èç¹û¾õµÃÉÏÃæµÄ²½ÖèÌ«¶à£¬Ò²¿ÉÒÔʹÓÃautoreconf¹¤¾ß£¬Ëü»á°´ÕÕ˳Ðòµ÷ÓÃÉÏÃæµÄ¹¤¾ß£¬²½ÖèÈçÏÂ
1. ÔÚ´æ·ÅÔ´´úÂëµÄĿ¼ÏÂÖ´ÐÐautoscanÃüÁîÉú³Éconfigure.scanÎļþ¡£
2. ½«configure.scanÎļþ¸ÄÃûΪconfigure.in£¬²¢¶ÔÆäĬÈÏÅäÖýøÐÐÐ޸ġ£
3. ´´½¨Ò»¸öÃûΪMakefile.amµÄÎļþ£¬²¢ÊäÈëÏàÓ¦µÄÄÚÈÝ¡£
4. Ö´ÐÐautoreconf --install£¬Ëü¸ù¾ÝMakefile.am£¬configure.inÎļþ£¬Éú³ÉMakefile.in£¬configure£¬config.h.in¡£
5. Ö´ÐÐ./configure½Å±¾Îļþ£¬Ëü¸ù¾ÝMakefile.inÎļþ£¬Éú³É×îÖÕµÄMakefileÎļþ¡£
ÉÏÃæ½éÉÜÁËÉú³ÉMakefileµÄÕû¸öÁ÷³Ì£¬ÆäÖаüÀ¨Á½¸ö¹Ø¼üµÄÎļþ£¬configure.inºÍMakefile.am£¬ÕâÁ½¸öÎļþ¶¼ÐèÒªÈ˹¤±àд£¬ÏÂÃæ¸ø³öÒ»¸ö¼òµ¥µÄʾÀý£¬ÏêϸµÄ½âÊÍĿǰд²»³öÀ´£¬µÈÓÐÒ»¶¨µÄ¾ÑéÖ®ºóÔÙд
Configure.inÎļþ£º
# Process this file with Autoconf to produce a configure script.
AC_INIT(Main.cpp) #Ö¸¶¨mainº¯ÊýËùÔÚµÄÎļþ
AM_INIT_AUTOMAKE(hello, 1.0) #Ö¸¶¨³ÌÐòÃû³ÆºÍ°æ±¾
# Checks for programs.
#¼ì²é¿ÉÓõıàÒëÆ÷
AC_PROG_CC #CÓïÑÔ±àÒëÆ÷
AC_PROG_CPP #C++±àÒëÆ÷
AC_PROG_CXX
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT(Makefile)
Makefile.amÎļþ£º
bin_PROGRAMS = hello # Éú³ÉµÄ¿ÉÖ´ÐÐÎļþÃû³Æ.
hello_SOURCES = Main.cpp A.h A.cpp B.h B.cpp # ³ÌÐòÒÀÀµµÄÔ´Îļþ
×÷Õߣºvevenlcf