锟斤拷 UNIX 锟斤拷锟斤拷系统锟斤拷锟斤拷: config.m4

锟斤拷展锟斤拷 config.m4 锟侥硷拷锟斤拷锟斤拷 UNIX 锟斤拷锟斤拷系统锟斤拷些锟斤拷展 configure 选锟斤拷锟斤拷支锟街的o拷锟斤拷锟斤拷要锟斤拷些锟斤拷展锟解,锟皆硷拷锟斤拷些源锟侥硷拷要锟斤拷锟斤拷锟斤拷锟斤拷锟揭伙拷锟斤拷帧锟斤拷锟斤拷锟斤拷芯锟斤拷锟绞癸拷玫锟� autoconf 锟疥,锟斤拷锟斤拷 PHP 锟截讹拷锟侥硷拷 autoconf 锟节斤拷锟侥o拷锟斤拷榭� Zend Engine 2 API 锟轿匡拷 锟铰节★拷

Tip

锟斤拷锟斤拷锟斤拷 PHP 锟斤拷展时锟斤拷强锟斤拷锟斤拷锟介安装 autoconf 2.13 锟芥,锟斤拷锟斤拷锟矫革拷锟铰的版本锟斤拷使锟矫★拷2.13 锟芥被锟斤拷为锟斤拷锟斤拷 autoconf 锟叫匡拷锟斤拷锟皆o拷锟斤拷锟斤拷锟皆硷拷锟矫伙拷锟斤拷锟斤拷锟饺凤拷锟斤拷锟斤拷玫陌姹撅拷锟绞癸拷锟斤拷锟斤拷掳姹撅拷锟绞憋拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟� configure 锟斤拷锟斤拷锟斤拷锟绞斤拷锟斤拷锟斤拷锟斤拷锟酵拷锟�

Example #1 config.m4 锟侥硷拷锟斤拷锟斤拷

dnl $Id$
dnl config.m4 for extension example
PHP_ARG_WITH(example, for example support,
[  --with-example[=FILE]       Include example support. File is the optional path to example-config])
PHP_ARG_ENABLE(example-debug, whether to enable debugging support in example,
[  --enable-example-debug        example: Enable debugging support in example], no, no)
PHP_ARG_WITH(example-extra, for extra libraries for example,
[  --with-example-extra=DIR      example: Location of extra libraries for example], no, no)

dnl 锟斤拷锟斤拷锟秸癸拷欠锟斤拷锟斤拷锟斤拷锟�
if test "$PHP_EXAMPLE" != "no"; then
  
  dnl 锟斤拷锟� example-config锟斤拷锟斤拷锟饺筹拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷路锟斤拷锟斤拷然锟斤拷锟斤拷 $PATH 锟斤拷寻锟斤拷
  AC_MSG_CHECKING([for example-config])
  EXAMPLE_CONFIG="example-config"
  if test "$PHP_EXAMPLE" != "yes"; then
    EXAMPLE_PATH=$PHP_EXAMPLE
  else
    EXAMPLE_PATH=`$php_shtool path $EXAMPLE_CONFIG`
  fi
  
  dnl 锟斤拷锟斤拷业锟斤拷锟斤拷玫锟� example-config锟斤拷锟斤拷使锟斤拷锟斤拷
  if test -f "$EXAMPLE_PATH" && test -x "$EXAMPLE_PATH" && $EXAMPLE_PATH --version > /dev/null 2>&1; then
    AC_MSG_RESULT([$EXAMPLE_PATH])
    EXAMPLE_LIB_NAME=`$EXAMPLE_PATH --libname`
    EXAMPLE_INCDIRS=`$EXAMPLE_PATH --incdirs`
    EXAMPLE_LIBS=`$EXAMPLE_PATH --libs`
    
    dnl 锟斤拷锟斤拷锟秸癸拷锟斤拷欠锟斤拷锟斤拷锟斤拷锟�
    PHP_CHECK_LIBRARY($EXAMPLE_LIB_NAME, example_critical_function,
    [
      dnl 锟斤拷锟斤拷锟斤拷锟斤拷 include 目录
      PHP_EVAL_INCLINE($EXAMPLE_INCDIRS)
      dnl 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷展锟解及锟斤拷展锟斤拷锟斤拷锟斤拷目录
      PHP_EVAL_LIBLINE($EXAMPLE_LIBS, EXAMPLE_SHARED_LIBADD)
    ],[
      dnl 锟斤拷锟斤拷
      AC_MSG_ERROR([example library not found. Check config.log for more information.])
    ],[$EXAMPLE_LIBS]
    )
  else
    dnl 没锟叫匡拷锟矫碉拷 example-config锟斤拷锟斤拷锟斤拷
    AC_MSG_RESULT([not found])
    AC_MSG_ERROR([Please check your example installation.])
  fi
  
  dnl 锟斤拷锟斤拷欠锟斤拷锟斤拷玫锟斤拷锟�
  if test "$PHP_EXAMPLE_DEBUG" != "no"; then
    dnl 锟角o拷锟斤拷锟斤拷锟斤拷 C 锟斤拷锟皆猴拷指锟斤拷
    AC_DEFINE(USE_EXAMPLE_DEBUG,1,[Include debugging support in example])
  fi
  
  dnl 锟斤拷锟斤拷锟斤拷锟街э拷锟�
  if test "$PHP_EXAMPLE_EXTRA" != "no"; then
    if test "$PHP_EXAMPLE_EXTRA" == "yes"; then
      AC_MSG_ERROR([You must specify a path when using --with-example-extra])
    fi
    
    PHP_CHECK_LIBRARY(example-extra, example_critical_extra_function,
    [
      dnl 锟斤拷锟斤拷锟斤拷锟铰凤拷锟�
      PHP_ADD_INCLUDE($PHP_EXAMPLE_EXTRA/include)
      PHP_ADD_LIBRARY_WITH_PATH(example-extra, $PHP_EXAMPLE_EXTRA/lib, EXAMPLE_SHARED_LIBADD)
      AC_DEFINE(HAVE_EXAMPLEEXTRALIB,1,[Whether example-extra support is present and requested])
      EXAMPLE_SOURCES="$EXAMPLE_SOURCES example_extra.c"
    ],[
      AC_MSG_ERROR([example-extra lib not found. See config.log for more information.])
    ],[-L$PHP_EXAMPLE_EXTRA/lib]
    )
  fi
  
  dnl 锟斤拷螅锟斤拷锟秸癸拷锟斤拷锟斤拷锟斤拷锟斤拷募锟斤拷锟斤拷锟较拷锟斤拷锟斤拷锟斤拷锟较低�
  PHP_NEW_EXTENSION(example, example.c $EXAMPLE_SOURCES, $ext_shared)
  PHP_SUBST(EXAMPLE_SHARED_LIBADD)
fi

autoconf 锟斤法锟斤拷锟�

config.m4 锟侥硷拷使锟斤拷 GNU autoconf 锟斤法锟斤拷写锟斤拷锟斤拷锟斤拷锟街拷锟斤拷锟斤拷锟斤拷锟角匡拷锟侥猴拷锟斤拷锟斤拷锟斤拷强锟斤拷 shell 锟脚憋拷锟斤拷注锟斤拷锟斤拷锟街凤拷锟斤拷 dnl 锟街革拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷曳锟斤拷锟斤拷锟斤拷屑洌拷锟斤拷纾�[ 锟斤拷 ]锟斤拷锟斤拷锟街凤拷锟斤拷锟缴帮拷锟斤拷要锟斤拷锟角讹拷锟斤拷锟斤拷谩锟斤拷锟斤拷锟斤拷锟斤拷锓拷慰锟斤拷刹渭锟轿伙拷锟� » http://www.gnu.org/software/autoconf/manual/ 锟斤拷 autoconf 锟街册。

PHP_ARG_*: 锟斤拷锟斤拷锟矫伙拷锟斤拷选锟斤拷

锟斤拷锟斤拷锟较碉拷 config.m4 锟斤拷锟斤拷锟叫o拷锟斤拷锟斤拷注锟酵猴拷锟斤拷锟饺硷拷锟斤拷锟斤拷 3 锟叫达拷锟诫,使锟斤拷锟斤拷 PHP_ARG_WITH() 锟斤拷 PHP_ARG_ENABLE()锟斤拷锟斤拷些锟斤拷 configure 锟结供锟剿匡拷选锟筋,锟斤拷锟斤拷锟斤拷锟斤拷 ./configure --help 时锟斤拷示锟侥帮拷锟斤拷锟侥憋拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷示锟侥o拷锟斤拷锟斤拷锟竭的诧拷同锟斤拷锟斤拷锟斤拷锟角达拷锟斤拷 --with-* 选锟筋还锟斤拷 --enable-* 选锟筋。每锟斤拷锟斤拷展应锟结供锟斤拷锟斤拷一锟斤拷锟斤拷锟较碉拷选锟斤拷锟皆硷拷锟斤拷展锟斤拷锟狡o拷锟皆憋拷锟矫伙拷锟斤拷选锟斤拷锟角凤拷锟斤拷展锟斤拷锟斤拷锟斤拷 PHP 锟叫★拷锟斤拷锟斤拷锟斤拷锟斤拷PHP_ARG_WITH() 锟斤拷锟斤拷取锟矫诧拷锟斤拷锟斤拷选锟筋,锟斤拷锟斤拷锟斤拷展锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷位锟矫o拷锟斤拷 PHP_ARG_ENABLE() 锟斤拷锟节达拷锟斤拷虻ケ锟街撅拷锟窖★拷睢�

Example #2 configure 锟斤拷锟斤拷锟斤拷锟�

$ ./configure --help
...
  --with-example[=FILE]       Include example support. FILE is the optional path to example-config
  --enable-example-debug        example: Enable debugging support in example
  --with-example-extra=DIR      example: Location of extra libraries for example
...

$ ./configure --with-example=/some/library/path/example-config --disable-example-debug --with-example-extra=/another/library/path
...
checking for example support... yes
checking whether to enable debugging support in example... no
checking for extra libraries for example... /another/library/path
...

Note:

锟节碉拷锟斤拷 configure 时锟斤拷锟斤拷锟斤拷选锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟叫碉拷顺锟斤拷锟斤拷危锟斤拷锟斤拷岚达拷锟� config.m4 锟斤拷指锟斤拷锟斤拷顺锟斤拷锟斤拷屑锟解。

锟斤拷锟斤拷锟矫伙拷选锟斤拷

config.m4 锟缴革拷锟矫伙拷锟结供一些锟斤拷什么锟斤拷选锟斤拷锟斤拷锟节撅拷锟斤拷锟斤拷锟斤拷选锟斤拷锟绞憋拷锟斤拷恕锟斤拷锟斤拷锟斤拷锟斤拷校锟斤拷锟斤拷锟窖★拷锟斤拷锟轿粗革拷锟绞憋拷锟饺荒拷锟轿� "no"锟斤拷习锟斤拷锟较o拷锟斤拷锟斤拷么锟街碉拷锟轿拷锟斤拷锟斤拷锟斤拷锟斤拷锟秸癸拷锟窖★拷锟斤拷默锟斤拷值锟斤拷为锟斤拷锟斤拷展锟斤拷 PHP 锟街匡拷锟斤拷锟斤拷锟斤拷锟斤拷 phpize 锟斤拷锟角达拷值锟斤拷锟斤拷要锟斤拷锟斤拷锟斤拷 PHP 锟斤拷时锟斤拷应锟斤拷默锟斤拷值锟斤拷锟斤拷展锟秸硷拷弄锟揭★拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷选锟斤拷拇锟斤拷锟揭拷锟斤拷拥枚唷�

锟斤拷锟斤拷 --with-example[=FILE] 选锟斤拷

锟斤拷锟饺硷拷锟斤拷欠锟斤拷锟斤拷锟斤拷锟� --with-example[=FILE] 选锟筋。锟斤拷锟窖★拷锟轿达拷锟街革拷锟斤拷锟斤拷锟绞癸拷梅穸ǖ母锟绞斤拷锟�--without-example 锟斤拷锟斤拷锟斤拷值为 "no" 时锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟秸癸拷暮锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷魏锟斤拷锟斤拷槎硷拷锟斤拷岱拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷指锟斤拷锟斤拷值为 /some/library/path/example-config锟斤拷锟斤拷锟皆碉拷一锟斤拷 test 锟缴癸拷锟剿★拷

锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟� AC_MSG_CHECKING()锟斤拷锟斤拷锟斤拷一锟斤拷 autoconf 锟疥,锟斤拷锟揭伙拷斜锟阶硷拷锟斤拷锟� "checking for ..." 锟斤拷锟斤拷息锟斤拷锟斤拷锟斤拷锟斤拷没锟斤拷俣锟斤拷锟� example-config 锟角凤拷锟斤拷一锟斤拷锟斤拷确锟斤拷路锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷校锟�PHP_EXAMPLE 锟斤拷取锟斤拷锟斤拷值为 /some/library/path/example-config锟斤拷锟斤拷锟窖革拷锟狡碉拷 EXAMPLE_PATH 锟斤拷锟斤拷锟斤拷锟剿★拷只锟斤拷锟矫伙拷指锟斤拷锟斤拷 --with-example 锟斤拷锟脚伙拷执锟叫达拷锟斤拷 $php_shtool path $EXAMPLE_CONFIG锟斤拷锟斤拷锟斤拷使锟斤拷锟矫伙拷锟斤拷前锟斤拷 PATH 锟斤拷锟斤拷锟斤拷锟斤拷锟狡诧拷 example-config 锟斤拷位锟矫★拷锟斤拷锟斤拷锟斤拷危锟斤拷锟揭伙拷锟斤拷锟斤拷羌锟斤拷锟斤拷选锟斤拷 EXAMPLE_PATH 锟角凤拷锟斤拷锟斤拷锟斤拷锟侥硷拷锟斤拷锟角凤拷锟街达拷校锟斤拷锟斤拷欠锟街达拷谐晒锟斤拷锟斤拷锟缴癸拷锟斤拷锟斤拷锟斤拷锟� AC_MSG_RESULT()锟斤拷锟斤拷锟斤拷锟斤拷 AC_MSG_CHECKING() 锟斤拷始锟斤拷锟斤拷锟斤拷小锟斤拷锟斤拷颍锟斤拷锟� AC_MSG_ERROR()锟斤拷锟斤拷印锟斤拷锟斤拷锟斤拷锟斤拷息锟斤拷锟斤拷锟斤拷锟叫讹拷执锟斤拷 configure锟斤拷

锟斤拷锟斤拷锟斤拷锟斤拷执锟叫硷拷锟斤拷 example-config 锟斤拷确锟斤拷一些站锟斤拷锟截讹拷锟斤拷锟斤拷锟斤拷锟斤拷息锟斤拷锟斤拷一锟斤拷锟斤拷锟矫碉拷锟斤拷 PHP_CHECK_LIBRARY()锟斤拷锟斤拷锟斤拷 PHP 锟斤拷锟斤拷系统锟结供锟斤拷一锟斤拷锟疥,锟斤拷装锟斤拷 autoconf 锟斤拷 AC_CHECK_LIB() 锟斤拷锟斤拷锟斤拷PHP_CHECK_LIBRARY() 锟斤拷锟皆憋拷锟诫、锟斤拷锟接猴拷执锟叫筹拷锟斤拷锟节碉拷一锟斤拷锟斤拷锟斤拷指锟斤拷锟侥匡拷锟叫碉拷锟斤拷锟缴第讹拷锟斤拷锟斤拷锟斤拷指锟斤拷锟侥凤拷锟脚o拷使锟矫碉拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷址锟斤拷锟斤拷锟轿拷锟斤拷锟斤拷锟斤拷锟斤拷选锟筋。锟斤拷锟斤拷锟斤拷猿晒锟斤拷耍锟斤拷锟斤拷锟斤拷械锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷慕疟锟斤拷锟斤拷私疟锟斤拷锟� example-config 锟斤拷锟结供锟斤拷原始锟斤拷选锟斤拷锟街凤拷锟斤拷锟斤拷取锟斤拷头锟侥硷拷路锟斤拷锟斤拷锟斤拷锟侥硷拷路锟斤拷锟酵匡拷锟斤拷锟狡o拷锟斤拷锟斤拷 PHP 锟斤拷锟斤拷系统锟斤拷锟斤拷锟斤拷锟斤拷锟绞э拷埽锟斤拷疟锟斤拷锟斤拷锟斤拷械锟斤拷母锟斤拷锟斤拷锟斤拷械慕疟锟斤拷锟斤拷锟绞憋拷锟斤拷锟� AC_MSG_ERROR() 锟斤拷锟叫断筹拷锟斤拷执锟叫★拷

锟斤拷锟斤拷 --enable-example-debug 选锟斤拷

锟斤拷锟斤拷 --enable-example-debug 锟杰简单★拷只锟津单地硷拷锟斤拷锟斤拷锟绞抵碉拷锟斤拷锟斤拷锟斤拷锟缴癸拷锟斤拷锟斤拷锟斤拷锟� AC_DEFINE() 使 C 锟斤拷锟皆猴拷指锟斤拷 USE_EXAMPLE_DEBUG 锟斤拷锟斤拷锟斤拷锟斤拷展锟斤拷源锟斤拷锟诫。锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟角革拷 config.h 锟斤拷注锟斤拷锟街凤拷锟斤拷锟斤拷通锟斤拷锟缴凤拷锟侥碉拷锟斤拷锟秸★拷

锟斤拷锟斤拷 --with-example-extra=DIR 选锟斤拷

锟斤拷锟节达拷锟斤拷锟斤拷锟斤拷说锟斤拷锟斤拷 --with-example-extra=DIR 选锟斤拷锟斤拷锟斤拷锟斤拷募俣锟斤拷锟�"锟斤拷锟斤拷"锟斤拷锟杰诧拷锟斤拷锟斤拷锟斤拷锟斤拷俣锟斤拷锟� example-config 锟斤拷锟斤拷锟斤拷也没锟斤拷默锟较碉拷锟斤拷锟斤拷路锟斤拷锟斤拷锟斤拷耍锟斤拷没锟斤拷锟揭拷锟斤拷锟斤拷锟侥匡拷之前锟结供锟斤拷锟矫筹拷锟斤拷锟叫点不锟斤拷锟斤拷实锟叫碉拷锟斤拷展锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷媒锟斤拷锟斤拷锟剿碉拷锟斤拷缘锟斤拷锟斤拷谩锟�

锟斤拷锟诫开始锟斤拷锟斤拷锟斤拷知锟侥凤拷式锟斤拷锟斤拷锟� PHP_EXAMPLE_EXTRA 锟斤拷锟斤拷实值锟斤拷锟斤拷锟斤拷锟斤拷峁╋拷锟轿拷锟斤拷锟绞斤拷锟斤拷虿换锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟矫伙拷也锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟侥癸拷锟杰★拷锟斤拷锟斤拷锟斤拷峁╋拷锟轿达拷峁╋拷锟斤拷锟斤拷目隙锟斤拷锟绞斤拷锟斤拷锟斤拷锟斤拷 AC_MSG_ERROR() 锟斤拷止锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷锟劫次碉拷锟斤拷 PHP_CHECK_LIBRARY()锟斤拷锟斤拷一锟轿o拷锟斤拷为没锟斤拷锟结供预锟斤拷锟斤拷锟斤拷锟窖★拷睿�PHP_ADD_INCLUDE() 锟斤拷 PHP_ADD_LIBRARY_WITH_PATH() 锟斤拷锟节癸拷锟斤拷锟斤拷锟解功锟斤拷锟斤拷锟斤拷锟酵凤拷募锟铰凤拷锟斤拷锟斤拷锟斤拷募锟铰凤拷锟斤拷涂锟斤拷志锟斤拷也锟斤拷锟斤拷 AC_DEFINE() 锟斤拷指示锟斤拷锟斤拷锟斤拷亩锟斤拷夤︼拷艽锟斤拷锟斤拷强锟斤拷玫模锟斤拷锟斤拷帽锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷院锟侥达拷锟诫,锟叫讹拷锟斤拷锟皆达拷锟斤拷锟揭拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞э拷埽锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷悉锟斤拷 AC_MSG_ERROR()锟斤拷锟斤拷一锟街诧拷同锟侥达拷锟斤拷失锟杰的凤拷式锟角革拷锟斤拷为锟斤拷锟斤拷 AC_MSG_WARNING()锟斤拷锟斤拷锟界:

AC_MSG_WARNING([example-extra lib not found. example will be built without extra functionality.])

锟斤拷锟斤拷锟叫o拷configure 锟斤拷锟接∫伙拷尉锟斤拷锟斤拷锟较拷锟斤拷锟斤拷谴锟斤拷锟斤拷壹锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷址锟绞斤拷锟斤拷锟绞э拷锟斤拷锟斤拷锟斤拷锟秸癸拷锟斤拷锟斤拷锟皆憋拷锟斤拷锟斤拷时锟斤拷锟斤拷锟斤拷

锟斤拷锟竭癸拷锟斤拷系统要锟斤拷什么

锟斤拷锟斤拷锟斤拷锟斤拷锟酵凤拷募锟斤拷锟斤拷囟锟斤拷目猓拷锟斤拷锟饺拷锟窖★拷畲︼拷锟斤拷锟诫及锟疥定锟藉,锟斤拷锟斤拷一锟斤拷锟斤拷要锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷吖锟斤拷锟较低橙ワ拷锟斤拷锟斤拷锟秸癸拷锟斤拷锟酵憋拷锟斤拷锟矫碉拷锟斤拷锟侥硷拷锟斤拷为锟斤拷锟斤拷锟斤拷些锟斤拷锟斤拷要锟斤拷锟斤拷 PHP_NEW_EXTENSION() 锟疥。锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷展锟斤拷锟斤拷锟狡o拷锟酵帮拷锟斤拷锟斤拷锟斤拷目录同锟斤拷锟斤拷锟节讹拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷为锟斤拷展锟斤拷一锟斤拷锟街碉拷锟斤拷锟斤拷源锟侥硷拷锟斤拷锟叫憋拷锟轿硷拷 PHP_ADD_BUILD_DIR() 锟皆伙拷取锟斤拷锟斤拷锟斤拷目录锟斤拷源锟侥硷拷锟斤拷拥锟斤拷锟斤拷锟斤拷锟斤拷痰锟斤拷锟斤拷锟斤拷息锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 $ext_shared锟斤拷 锟斤拷为锟斤拷 --with-example[=FILE] 锟斤拷锟斤拷锟斤拷 PHP_ARG_WITH()时锟斤拷锟斤拷 configure 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷锟侥革拷锟斤拷锟斤拷指锟斤拷一锟斤拷"SAPI 锟斤拷"锟斤拷锟斤拷锟斤拷锟斤拷专锟斤拷锟斤拷要 CGI 锟斤拷 CLI SAPI 锟斤拷锟斤拷展锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟接︼拷锟斤拷铡锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷指锟斤拷锟剿癸拷锟斤拷时要锟斤拷锟斤拷 CFLAGS 锟侥憋拷志锟叫憋拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷锟斤拷值锟斤拷为 "yes" 时锟斤拷强锟斤拷锟斤拷锟斤拷锟斤拷展使锟斤拷 $CXX 锟斤拷锟斤拷 $CC 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟皆猴拷锟斤拷锟斤拷胁锟斤拷锟斤拷锟斤拷强锟窖★拷摹锟斤拷锟襟,碉拷锟斤拷 PHP_SUBST() 锟斤拷锟斤拷锟斤拷锟斤拷展锟侥癸拷锟斤拷锟斤拷锟斤拷锟轿硷拷 锟斤拷展锟斤拷锟� FAQ 锟皆伙拷取锟斤拷锟斤拷锟叫关斤拷锟矫癸拷锟斤拷式锟铰癸拷锟斤拷锟斤拷展锟斤拷锟斤拷息锟斤拷

counter 锟斤拷展锟斤拷 config.m4 锟侥硷拷

锟斤拷前锟斤拷写锟斤拷 counter 锟斤拷展锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟津单碉拷 config.m4 锟侥硷拷锟斤拷锟斤拷锟斤拷使锟矫很多构锟斤拷系统锟斤拷锟斤拷锟皆★拷锟皆诧拷使锟斤拷锟解部锟侥伙拷蠖ǖ目锟斤拷锟斤拷展锟斤拷说锟斤拷锟斤拷锟斤拷一锟斤拷锟饺较好的诧拷锟斤拷锟斤拷式锟斤拷

Example #3 counter 锟斤拷 config.m4 锟侥硷拷

dnl
$
Id$
dnl config.m4 for extension counter

PHP_ARG_ENABLE(counter, for counter support,
[  --enable-counter            Include counter support])

dnl Check whether the extension is enabled at all
if test "$PHP_COUNTER" != "no"; then
  dnl Finally, tell the build system about the extension and what files are needed
  PHP_NEW_EXTENSION(counter, counter.c counter_util.c, $ext_shared)
  PHP_SUBST(COUNTER_SHARED_LIBADD)
fi