configure.ac, Makefile.am À» ÀÛ¼ºÇÒ¶§ ±âº»ÀûÀ¸·Î Àû¾î¾ßÇÏ´Â macro µîÀ» ¼³¸íÇϰڴÙ. À§ÀÇ Àüü È帧À» ÀÌÇØÇßÀ¸¸é Áö±ÝºÎÅÍÀÇ »çÇ×µéÀº Çѹø Àаí Áö³ªÃĵµ µÈ´Ù. ±×·¯³ª ±âº»ÀÎ ¸¸Å ÀÌ´ë·Î ¾²Áö ¾ÊÀ»°æ¿ì ÀüÇô ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù. --;
configure.ac ¿¡¼´Â check »çÇ×µéÀ» test ÇÏ´Â ÀϹÝÀûÀÎ ¼ø¼°¡ Á¤ÇØÁ®ÀÖ´Ù. ÀÌ ¼ø¼¸¦ µû¸£¸é¼ ÇÊ¿äÇÑ »çÇ׵鸸 °Ë»çÇÏ¸é µÈ´Ù. ´ë·«ÀûÀÎ ¼ø¼´Â
Boilerplate : ±âº»ÀûÀÎ macro. AC_INIT ÀÌ Àִµ¥ ÀÌ´Â ²À ¸Ç ¾Õ¿¡ ¾²¿©Á® ÀÖ¾î¾ß ÇÑ´Ù. AM_INIT_AUTOMAKE, AC_CONFIG_HEADER, AC_REVISION ÀÌ ÀÌ¿¡ ¼ÓÇÑ´Ù. ÈçÈ÷ AC_INIT °ú AM_INIT_AUTOMAKE, AM_CONFIG_HEADER ´Â ²À µé¾î°£´Ù.
Options
Programs : configure °úÁ¤À̳ª build °úÁ¤»ó¿¡ ÇÊ¿äÇÑ ÇÁ·Î±×·¥µéÀ» check ÇÑ´Ù. AC_CHECK_PROG, AC_PATH_TOOL ÀÌ ÀÖ´Ù.
Libraries
Headers : ÇÊ¿äÇÑ header file µéÀÌ Á¸ÀçÇÏ´ÂÁö¸¦ °Ë»çÇÑ´Ù.
Typedefs and structures
Functions
Output
À§ÀÇ Ç׸ñµéÀº autoscan À» ÅëÇØ¼ configure.scan À̶ó´Â ÆÄÀÏÀ» »ý¼ºÇÏ°Ô µÇ¸é ±×´ë·Î ³ª¿À°Ô µÈ´Ù. ÀÌ autoscan Àº configure.ac ÆÄÀÏÀÇ ÀÛ¼ºÀ» ½±°Ô ÇØÁÖ°íÀÚ ÇÏ´Â µµ±¸ÀÌ´Ù. Ç㳪 ¾ÆÁÖ ÀÚ¼¼ÇÑ °Í±îÁö Ãâ·ÂÀ» ÇØÁÖ°í ÇÊ¿ä¾ø´Â °ÍµéÀÌ ¸¹±â¶§¹®¿¡ configure.ac ´Â Á÷Á¢ ÀÛ¼ºÇϴ°ÍÀÌ ÁÁ´Ù°í »ý°¢µÈ´Ù. °£´ÜÈ÷ ¿¹¸¦ µé¾îº¸¸é
# Process this file with autoconf to produce a configure script. AC_INIT(eostk, 1.0, sylee@inzen.com) AM_INIT_AUTOMAKE(eostk, 1.0) AM_CONFIG_HEADER(config.h:config.h.in) # Checks for programs. AC_PROG_CC AC_PROG_INSTALL # Checks for libraries. AC_CHECK_LIB(socket, connect) # Checks for header files. AC_HEADER_DIRENT # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_UID_T AC_TYPE_PID_T # Checks for library functions. AC_HEADER_STDC AC_CHECK_FUNCS(strcpy bcopy) # Finally, make output files AC_CONFIG_FILES( Makefile solaris/Makefile linux/Makefile ) AC_OUTPUT |
¼øÀÌ µÉ¼öÀÖ´Ù. ÀÌ ¼ø¼´ë·Î ÇÊ¿äÇÑ check »çÇ×À» Ãß°¡½Ãų¼öµµ ÀÖ°í ÇÊ¿ä¾ø´Â°ÍÀº Á¦¿Ü½Ãų¼öµµ ÀÖ´Ù.configure ½Ã¿¡ ¸ðµç ÇÊ¿äÇÑ Á¤º¸µéÀÌ ¼öÁýµÈ´Ù°í ÇÒ¶§ ÀÌÀÇ ÃʾÈÀÌ µÇ´Â configure.ac ÆÄÀÏÀÌ °¡Àå Áß¿äÇÏ´Ù°í ÇÒ¼öÀÖ´Ù.
Makefile.am ÀÇ ±âÃÊ´Â À§¿¡¼ ¼³¸íÇÑ °ÍÀ¸·Î ÃæºÐÇÏ´Ù°í »ý°¢ÇÑ´Ù. Ãß°¡ÀûÀ¸·Î ¾Ë°íÀÖÀ¸¸é ÁÁÀº »çÇ×µéÀ» Àû¾îº¸¸é check_ prefix ¿Í TESTS primary, install-exec-hook ÀÌ ÀÖ´Ù.
check_ prefix, TESTS primary : À̵éÀº make check À¸·Î ½ÇÇàÀÌ µÇ´Â ÆÄÀϵéÀ» ÁöÁ¤ÇÒ¼öÀÖ´Ù. ÈçÈ÷ testsuit ÀÌ ÀÌ¿¡ ÇØ´çÇϴµ¥ ¿©±â¿¡ ÁöÁ¤µÈ ÇÁ·Î±×·¥µéÀº ½ÇÁ¦·Î´Â install µÇÁö ¾Ê°í build time ¿¡¸¸ ½ÇÇàÀÌ °¡´ÉÇÏ´Ù. Áï make check À» Çϸé TESTS ¿¡ Á¤ÀÇµÈ ÇÁ·Î±×·¥µéÀ» ã¾Æ¼ build ½ÃÄѼ ½ÇÇà½ÃŰ°Ô µÈ´Ù. À̶§ install Àº ÀϾÁö ¾Ê´Â´Ù.
install-exec-hook target : make install À» Çϸé ÈçÈ÷ ÁöÁ¤µÈ µ¿ÀÛÀÌ ÀϾ°Ô µÈ´Ù. build °¡ ³¡³ÈÄ À̸¦ ÁöÁ¤ÇÑ directory ¿¡ º¹»çÇϰųª Çϴµ¥ À̸¦ ¸¶Ä£ÈÄ Ãß°¡ÀûÀÎ ÀÛ¾÷À» ÇϰíÀÚ ÇÒ °æ¿ì install-exec-hook ¿¡ ±× ÇൿÀ» ÁöÁ¤ÇØ ÁÖ¸é µÈ´Ù. À̸¦ install hook À̶ó°í ÇÑ´Ù.
check_PROGRAMS = test1 test1_SOURCES = test1.c check_SCRIPTS = test2 TESTS = test1 \ test2 install-exec-hook : chmod +x INSTALL.solaris ./INSTALL.solaris |
ÀÌ·¸°Ô Çϸé test1 À̶ó´Â c ÇÁ·Î±×·¥°ú test2 ¶ó´Â script °¡ make check ½Ã ½ÇÇàµÉ TESTS ÆÄÀÏ·Î ÁöÁ¤ÀÌ µÇ°í make check ÀÌ ºÒ·ÁÁö±â Àü±îÁö´Â build µÇÁö ¾Ê´Â´Ù. make check ÀÌ ºÒ·¯Áö¸é test1 ÀÌ ºôµåµÇ°í test1 test2 ¼øÀ¸·Î ½ÇÇàµÈ´Ù. ±×·¯³ª install Àº µÇÁö ¾Ê´Â´Ù.
install-exec-hook À̶ó´Â target Àº make install À» Á¤»óÀûÀ¸·Î ½ÇÇàÇÑÈÄ ½ÇÇàµÈ´Ù. ÇöÀç directory °¡ solaris ¶ó°í ÇÒ¶§ solaris ÀÇ make install °úÁ¤À» ¸¶Ä£ÈÄ¿¡ ½ÇÇàÀÌ µÈ´Ù. ÀÌ ÈÄ¿¡ solaris2 ¶ó´Â directory ¸¦ ºôµåÇÏ°Ô µÇ¾îÀÖ´Ù ÇÏ´õ¶óµµ ÀÌ °úÁ¤Àº ÇØ´ç directory ÀÇ install À» ¸¶Ä£ÈÄ¿¡ ÀϾÙ. Áï solaris ÀÇ make install À» ¸¶Ä£ÈÄ¿¡ ÀÌ °úÁ¤ÀÌ ½ÇÇàµÈ´Ù. ±× ÈÄ¿¡ solaris2 ¸¦ build ÇÏ°Ô µÈ´Ù.