Next: , Previous: Linking, Up: A Program   [Contents][Index]


7.1.3 ¥½¡¼¥¹¤Î¾ò·ï¥³¥ó¥Ñ¥¤¥ë

configure¤ÎÃÖ´¹¼°(Î㤨¤Ð¡¤AC_SUBST¤ÇÄêµÁ¤µ¤ì¤ëFOO ¤òÍѤ¤¤¿‘@FOO@’¤ä‘$(FOO)’)¤ò‘_SOURCES’ ÊÑ¿ô¤Ë½ñ¤­¹þ¤à ¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡¥¤³¤ÎÍýͳ¤òÀâÌÀ¤¹¤ë¤Î¤Ï¾¯¤·Æñ¤·¤¤¤Î¤Ç¤¹¤¬¡¤Ã±½ã¤Ë¸À¤Ã ¤ÆÆ°ºî¤·¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç½½Ê¬¤Ç¤·¤ç¤¦¡¥¤³¤ì¤ò»î¤ß¤¿¾ì¹ç¡¤Automake¤Ï¥¨¥é¡¼ ¤òȯ¤·¤Þ¤¹¡¥

¹¬¤¤¡¤Æ±¤¸·ë²Ì¤òãÀ®¤¹¤ë¤¿¤á¤ËÆó¤Ä¤ÎÊ̤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡¥°ì¤Ä¤Ï¡¤ configure¤ÎÃÖ´¹¼°¤ò_LDADDÊÑ¿ô¤Ç»ÈÍѤ¹¤ëÊýË¡¤Ç¡¤¤â¤¦°ì¤Ä ¤Ï¡¤Automake¤Î¾ò·ï¼°¤ò»ÈÍѤ¹¤ëÊýË¡¤Ç¤¹¡¥

7.1.3.1 _LDADD¤ÎÃÖ´¹¼°¤ò»ÈÍѤ·¤¿¾ò·ï¥³¥ó¥Ñ¥¤¥ë

Automake¤Ï¡¤¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤¬Á´¤Æ¤Î¾õ¶·¤Ç¥Ó¥ë¥É¤µ¤ì¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¾ì¹ç ¤Ç¤â¡¤¥×¥í¥°¥é¥à¤ËÁȤ߹þ¤Þ¤ì¤ë²ÄǽÀ­¤¬¤¢¤ë¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ò¤¹¤Ù¤ÆÃÎ¤Ã¤Æ ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¾ò·ï¤Ë¤è¤Ã¤Æ¤Î¤ß¥Ó¥ë¥É¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤Ï¡¤Å¬ÀÚ¤Ê ‘EXTRA_’ÊÑ¿ô¤Ç¥ê¥¹¥È¥¢¥Ã¥×¤¹¤Ù¤­¤Ç¤¹¡¥Î㤨¤Ð¡¤¾ò·ï¤Ë¤è¤Ã¤Æ hello-linux.c¤ähello-generic.c¤òhello¤ËÁȤ߹þ¤à¾ì ¹ç¡¤Makefile.am¤Ë°Ê²¼¤Î¤â¤Î¤ò´Þ¤á¤Þ¤¹¡¥

bin_PROGRAMS = hello
hello_SOURCES = hello-common.c
EXTRA_hello_SOURCES = hello-linux.c hello-generic.c
hello_LDADD = $(HELLO_SYSTEM)
hello_DEPENDENCIES = $(HELLO_SYSTEM)

configure.ac¤Ç$(HELLO_SYSTEM)¤ÎÃÖ´¹¼°¤òÀßÄꤹ¤ë¤³¤È¤¬²Ä ǽ¤Ç¤¹¡¥

…
case $host in
  *linux*) HELLO_SYSTEM='hello-linux.$(OBJEXT)' ;;
  *)       HELLO_SYSTEM='hello-generic.$(OBJEXT)' ;;
esac
AC_SUBST([HELLO_SYSTEM])
…

¤³¤Î¾ì¹ç¡¤HELLO_SYSTEM¤Ïhello-linux.o¤ä hello-generic.o¤ÇÃÖ´¹¤µ¤ì¡¤¥Ó¥ë¥É¤·¥ê¥ó¥¯¤¹¤ë¤¿¤á¤Ë hello_DEPENDENCIES¤Èhello_LDADD¤ËÄɲ䵤ì¤Þ¤¹¡¥

7.1.3.2 Automake¤Î¾ò·ï¼°¤ò»ÈÍѤ·¤¿¾ò·ï¥³¥ó¥Ñ¥¤¥ë

¾ò·ï¤Ë¤è¤Ã¤Æ¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤Î¤è¤ê´Êñ¤ÊÊýË¡¤È¤·¤Æ¤Ï¡¤ Automake¤Î¾ò·ï¼°¤ò»ÈÍѤ¹¤ë¤³¤È¤¬Â¿¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥Î㤨¤Ð¡¤Æ±¤¸ hello¤ÎÎã¤ò¥Ó¥ë¥É¤¹¤ë¤¿¤á¡¤°Ê²¼¤Î¤è¤¦¤ÊÆâÍÆ¤ÎMakefile.am ¤ò»ÈÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤·¤ç¤¦¡¥

bin_PROGRAMS = hello
if LINUX
hello_SOURCES = hello-linux.c hello-common.c
else
hello_SOURCES = hello-generic.c hello-common.c
endif

¤³¤Î¾ì¹ç¡¤configure.ac¤ÇAM_CONDITIONAL¤ò»ÈÍѤ·¤Æ LINUX¾ò·ï¼°¤òÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹(see Conditionals)¡¥

Automake¤Ï¡¤¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Î´°Á´¤Ê¥ê¥¹¥È¤ò¹½À®¤¹¤ë¤¿¤á¤Ë¤½¤ì¤¾¤ì¤ÎÊÑ¿ô ¤ÎÆâÍÆ¤òÄ´ºº¤¹¤ë¤Î¤Ç¡¤¤³¤Î¤è¤¦¤Ê¾ò·ï¤ò»ÈÍѤ¹¤ë¤È¤­¤Ï¡¤‘EXTRA_’ÊÑ ¿ô¤ò»ÈÍѤ¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡¥

¥×¥í¥°¥é¥à¤Ç¿¤¯¤Î¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¤¤ª¤½¤é¤¯¾ò·ïÉդΠ+=¤Î¤Û¤¦¤¬Ë¾¤Þ¤·¤¤¤Ç¤·¤ç¤¦¡¥

bin_PROGRAMS = hello
hello_SOURCES = hello-common.c
if LINUX
hello_SOURCES += hello-linux.c
else
hello_SOURCES += hello-generic.c
endif