..私はいつも忘れて、またはその両方のために非常に重要であり、中国のように良いのLinuxバージョン、それを書き留めて読み、英語での情報を参照することを忘れないで、なぜ知らない
素人の用語を:
Makefile.amためのautomakeを- > Makefileの.IN
configure.acのためのautoconf - >のconfigure
Makfile.inためのconfigure - > Makefileのの
注意:. configure.ac以前から知られているconfiguer.inが、混乱やMakefile.in
自動スキャン非常に良いツールですが、それ自動的にチェック生成するために、現在のディレクトリ(または指定したディレクトリ)にあるソースコードは
.. configure.scan検出されるが、最初の段落の自動スキャンmanページ添付のconfigure.acテンプレートとして使用することのできる機能を示しconfigure.scan
で調べたソースファイルをディレクトリSRCDIRするAT根ざしツリー、または
全く場合、現在のディレクトリが与えられている。共通のソースファイルを検索する
移植性の問題を、 `configure.acの不備をチェックしてください「and`ファイルAを作成configure.scan」予備設定は`そのため.AC」
パッケージ。
automakeはとautoconf関係は(文書を言うことではautoconfは次のとおりです。Makfile.inをインスタンス化)autoconfの生成したconfigureスクリプトは、Makefile.in Makefileを生成するための変数の機能の一部を交換することで、理由は非常にシンプルですが、非常に近い、configureはインスタンス化することができます任意のファイルは、通常、接尾辞を示す.in。
以下は、トップレベルのディレクトリであるconfigure.acのSMTH_BBS
AC_INIT(smthbbs、2.0dev、[email protected])
AM_INIT_AUTOMAKE([外国DIST-BZIP2])が//configure.ac Automakeのマクロを使用した
// AutomakeにMakfile.amに従ってMakefile.inを生成
configure.ac、automakeの初期化に読み取るために//
AC_CANONICAL_TARGET
場合、 "ホスト} {$"
I 86 * - * - * FreeBSDの)
OSTYPE = "FREEBSD"
;;
* - * - * Solarisの場合)
OSTYPE = "SOLARIS"
LIBS = "$ LIBS -lnsl -lsocket"
;;
* - * - * SunOSの)
OSTYPE = "SUNOS"
LIBS = "$ LIBS -lnsl -lsocket"
;;
* - * - * Linuxの)
OSTYPE = "LINUX"
;;
* - * - * Cygwinの)
OSTYPE = " CYGWIN "
LIBS =" $ LIBSの-lcygipc "
;;
*)
OSTYPE =" GENERIC "
;;
ESAC
CFLAGS =" $ CFLAGS -D $ OSTYPEは「
//カレントディレクトリに設定が含まれてチェックすることで、ソースコードディレクトリの整合性を確保します。 h.in
AC_CONFIG_SRCDIR([、config.h.in])
// config.hの生成されたヘッダファイルは、他の、config.h.inの例であり
、この命令に応じてconfig.hのautoheaderはを生成//実行コマンド。 中
AM_CONFIG_HEADER(config.hの)
//プレフィックスのデフォルト値に設定
AC_PREFIX_DEFAULT(/ホーム/ BBS)を
m4_include(config.icc)
// --enable-innbbsdパラメータ
AC_ARG_ENABLE(innbbsd、
[--enable-innbbsd
(innbbsdパッケージを必要とする)innbbsdサポートを有効にします]、
[
テスト"の$ enableval" = "はい" IF;その後、
テストinnbbsdを-dのIF;その後、
//下Makfile.inがinnbbsdはMakefileを生成するインスタンス化し、
linkinnd.shリンクをオンにして実行します//。
AC_CONFIG_FILES(innbbsd / Makefileのの
innbbsd / linkinnd .SH)
BBSSUBDIRS = "$ BBSSUBDIRSのinnbbsd"
他
AC_MSG_ERRORは、([用パッケージ変更をinnbbsd見つけることができない、それを最初にGETしてください!])
Fiの
Fiの
])
// -有効-SSHパラメータ
AC_ARG_ENABLE(SSHを、
[--enable-SSHは
] SSH BBSDサポート(ためsshbbsdパッケージ変更を必要とする可能)、
[
テスト"の$ enableval" = "yes"の場合。その後、
IFテスト-dのsshbbsdは、次に
// sshbbsdディレクトリでconfigureコマンドを実行します
。//代わりにMakefileのは相対的な独立性を持っているsshbbsdインスタンスの
AC_CONFIG_SUBDIRS(sshbbsd)
BBSSUBDIRS = " BBSSUBDIRSは$をsshbbsd」
他
AC_MSG_ERRORは([sshbbsdパッケージを見つけることができない、最初にそれを入手してください!])
Fiの
Fiの
])
であれば[テスト-z "$のenable_www"]; その後、
enable_www =はい
Fiを
// - - WWW有効
AC_ARG_ENABLEを(WWW、
[--enable-WWW
Webサポート(bbs2www必要なパッケージ)を有効]、
[
かのテスト"の$ enableval" = "yes"を、次に
もしテスト-d bbs2www ;次いで
//实例化bbs2www目录的Makefileを及のconfig.m4文件
AC_CONFIG_FILES([bbs2www / Makefileの
bbs2www / LIB / Makefileの
bbs2www / PHPLIB / Makefileの
bbs2www / PHPLIB /のconfig.m4])
BBSSUBDIRSは= "$ BBSSUBDIRS bbs2www"
他の
AC_MSG_ERROR([bbs2wwwを見つけることができませんパッケージ化することができ、それを最初にGETしてください!])
Fiの
CONFIG_HAVE_WWWは。1 =
他
CONFIG_HAVE_WWW = 0
Fiの
])
// *各を交換してください変数@ .inファイする@ CONFIG_HAVE_WWW
AC_SUBST(CONFIG_HAVE_WWW)
AC_SUBST(BBSSUBDIRS)
m4_include(bbs2www.in)
チェック自動スキャンによって生成され、自動的に//数
ヘッダファイルを#をチェックします。
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([ARPA / inet.h fcntl.h limits.hにmalloc.hをnetdb.h netinetの/ in.h sgtty.h STDLIB.H string.hのSYS /ファイル.h SYS / ioctl.h SYS / param.h SYS /socket.h SYS / TIME.H termio.h termios.h unistd.h utime.h])
のtypedef、構造、およびコンパイラの特性のため#チェック。
AC_HEADER_STAT
AC_C_CONST
AC_C_INLINE
AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_CHECK_TYPES([構造体utimbuf]、[]、[]、[#含む<utime.h>])
AC_CHECK_SIZEOF(INT *)
AC_CHECK_SIZEOF(長い長いINT)
AC_CHECK_SIZEOF(long int型)
AC_CHECK_SIZEOF( int型)
AC_CHECK_SIZEOF(int64型)
AC_CHECK_SIZEOF(INT32)
ライブラリ関数の#をチェックします。
AC_CONFIG_LIBOBJ_DIR(LIB)
AC_FUNC_ALLOCA
AC_FUNC_FORK
AC_FUNC_GETLOADAVG
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_MKTIME
AC_FUNC_MMAP
AC_FUNC_SETPGRP
AC_FUNC_SETVBUF_REVERSED
AC_TYPE_SIGNAL
AC_FUNC_STAT
AC_FUNC_STRFTIME
AC_FUNC_UTIME_NULL
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([アラームのatexit BZERO dup2のftruncateのGETCWDのgethostbyaddrのgethostbynameのgethostname INET_NTOA isasciiはでmemchrのmemset MKDIRと、munmap RMDIR選択ソケットstrcasecmp strcasestr strchrのstrdupはstrerror strncasecmp strpbrk strrchrはstrstr strtolはUTIME memmem群れINET_ATONはinet_pton ISBLANK])
AC_CHECK_TYPES(BOOL)
AC_CHECK_TYPES(sig_t ,,, [書式#include <signal.hに>])
エラー言語を選択DNL
// -有効-サイト
AC_ARG_ENABLE(サイトを、
[--enable-サイト=サイト名
を選択し、サイトの特殊ファイル(サイトのディレクトリを参照してください)]、
[
BBSSITE = $ enableval
]、 [BBSSITE = "なめらか"
SITEDIR =サイト])
テスト-f $ SRCDIR /サイト/ $ BBSSITE.c場合; その後、
SITEDIR =サイト
他
-f $ SRCDIRテスト/サイト/ $ BBSSITE.c IF;その後、
sitedir =サイト
他の
AC_MSG_ERROR([$ BBSSITEのERROR不明なサイト、サイトを参照してください/!])
Fiの
Fiの
//各ファイルを置き換える* .IN @ BBSSITE @変数
AC_SUBST(BBSSITE)
プログラムの#かどうかをチェックします。
AC_PROG_CXX
AC_PROG_AWK
AC_PROG_CC
AC_PROG_LIBTOOL
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB
AC_PROG_YACCの
m4_include(config.lib)
ライブラリの#かどうかをチェックします。
ソフトリンク//ファイルを作ります。場合は、ソースファイルのチェーンlibBBSとサイトディレクトリsrcディレクトリに
AC_CONFIG_LINKS(libBBS / site.c:$ SITEDIR / $ BBSSITE.c
libBBS / site.h:$ SITEDIR / $ BBSSITE.h
のsrc / site.c:$ SITEDIR / $ BBSSITE.c
のsrc / site.h:$ SITEDIR / $ BBSSITE.h
libBBS / default.c:$ SITEDIR /デフォルト。 C
libBBS / default.h:$ SITEDIR / default.h
のsrc / default.c:$ SITEDIR / default.c
のsrc / default.h:$ SITEDIR / default.h
)
のCD libBBS。で私は* [[CH]]。やる
:AC_CONFIG_LINKS(libBBS / $ Iのsrc / $ I)
で行わ
CDを..
ORIGIN_LIBTOOL = $ LIBTOOL
AC_SUBST(ORIGIN_LIBTOOL)
AC_SUBST(SED)
abssrcdir = `CD $ SRCDIR && pwd`は
LIBTOOL = "$ abssrcdir / wrapper.sh"を
//替换* .IN文件中的@ abssrcdir @变量
AC_SUBST(abssrcdir)
//实例化
AC_CONFIG_FILES([Makefileの
libBBS / Makefileに
はlibSystem / Makefileの
rzsz / Makefileのの
デーモン/ Makefileの
mail2bbs / Makefileの
local_utl / Makefileの
サービス/ Makefileのの
サービス/ピップ/ Makefileの
サービス/ワーカー/メイクファイル
サービス/ personaldns /メイクファイルの
SRC / bbsconfig.hの
SRC /メイクファイル])
AC_CONFIG_FILES(wrapper.sh、chmodの+ X wrapper.sh)
AC_OUTPUT
素人の用語を:
Makefile.amためのautomakeを- > Makefileの.IN
configure.acのためのautoconf - >のconfigure
Makfile.inためのconfigure - > Makefileのの
注意:. configure.ac以前から知られているconfiguer.inが、混乱やMakefile.in
自動スキャン非常に良いツールですが、それ自動的にチェック生成するために、現在のディレクトリ(または指定したディレクトリ)にあるソースコードは
.. configure.scan検出されるが、最初の段落の自動スキャンmanページ添付のconfigure.acテンプレートとして使用することのできる機能を示しconfigure.scan
で調べたソースファイルをディレクトリSRCDIRするAT根ざしツリー、または
全く場合、現在のディレクトリが与えられている。共通のソースファイルを検索する
移植性の問題を、 `configure.acの不備をチェックしてください「and`ファイルAを作成configure.scan」予備設定は`そのため.AC」
パッケージ。
automakeはとautoconf関係は(文書を言うことではautoconfは次のとおりです。Makfile.inをインスタンス化)autoconfの生成したconfigureスクリプトは、Makefile.in Makefileを生成するための変数の機能の一部を交換することで、理由は非常にシンプルですが、非常に近い、configureはインスタンス化することができます任意のファイルは、通常、接尾辞を示す.in。
以下は、トップレベルのディレクトリであるconfigure.acのSMTH_BBS
AC_INIT(smthbbs、2.0dev、[email protected])
AM_INIT_AUTOMAKE([外国DIST-BZIP2])が//configure.ac Automakeのマクロを使用した
// AutomakeにMakfile.amに従ってMakefile.inを生成
configure.ac、automakeの初期化に読み取るために//
AC_CANONICAL_TARGET
場合、 "ホスト} {$"
I 86 * - * - * FreeBSDの)
OSTYPE = "FREEBSD"
;;
* - * - * Solarisの場合)
OSTYPE = "SOLARIS"
LIBS = "$ LIBS -lnsl -lsocket"
;;
* - * - * SunOSの)
OSTYPE = "SUNOS"
LIBS = "$ LIBS -lnsl -lsocket"
;;
* - * - * Linuxの)
OSTYPE = "LINUX"
;;
* - * - * Cygwinの)
OSTYPE = " CYGWIN "
LIBS =" $ LIBSの-lcygipc "
;;
*)
OSTYPE =" GENERIC "
;;
ESAC
CFLAGS =" $ CFLAGS -D $ OSTYPEは「
//カレントディレクトリに設定が含まれてチェックすることで、ソースコードディレクトリの整合性を確保します。 h.in
AC_CONFIG_SRCDIR([、config.h.in])
// config.hの生成されたヘッダファイルは、他の、config.h.inの例であり
、この命令に応じてconfig.hのautoheaderはを生成//実行コマンド。 中
AM_CONFIG_HEADER(config.hの)
//プレフィックスのデフォルト値に設定
AC_PREFIX_DEFAULT(/ホーム/ BBS)を
m4_include(config.icc)
// --enable-innbbsdパラメータ
AC_ARG_ENABLE(innbbsd、
[--enable-innbbsd
(innbbsdパッケージを必要とする)innbbsdサポートを有効にします]、
[
テスト"の$ enableval" = "はい" IF;その後、
テストinnbbsdを-dのIF;その後、
//下Makfile.inがinnbbsdはMakefileを生成するインスタンス化し、
linkinnd.shリンクをオンにして実行します//。
AC_CONFIG_FILES(innbbsd / Makefileのの
innbbsd / linkinnd .SH)
BBSSUBDIRS = "$ BBSSUBDIRSのinnbbsd"
他
AC_MSG_ERRORは、([用パッケージ変更をinnbbsd見つけることができない、それを最初にGETしてください!])
Fiの
Fiの
])
// -有効-SSHパラメータ
AC_ARG_ENABLE(SSHを、
[--enable-SSHは
] SSH BBSDサポート(ためsshbbsdパッケージ変更を必要とする可能)、
[
テスト"の$ enableval" = "yes"の場合。その後、
IFテスト-dのsshbbsdは、次に
// sshbbsdディレクトリでconfigureコマンドを実行します
。//代わりにMakefileのは相対的な独立性を持っているsshbbsdインスタンスの
AC_CONFIG_SUBDIRS(sshbbsd)
BBSSUBDIRS = " BBSSUBDIRSは$をsshbbsd」
他
AC_MSG_ERRORは([sshbbsdパッケージを見つけることができない、最初にそれを入手してください!])
Fiの
Fiの
])
であれば[テスト-z "$のenable_www"]; その後、
enable_www =はい
Fiを
// - - WWW有効
AC_ARG_ENABLEを(WWW、
[--enable-WWW
Webサポート(bbs2www必要なパッケージ)を有効]、
[
かのテスト"の$ enableval" = "yes"を、次に
もしテスト-d bbs2www ;次いで
//实例化bbs2www目录的Makefileを及のconfig.m4文件
AC_CONFIG_FILES([bbs2www / Makefileの
bbs2www / LIB / Makefileの
bbs2www / PHPLIB / Makefileの
bbs2www / PHPLIB /のconfig.m4])
BBSSUBDIRSは= "$ BBSSUBDIRS bbs2www"
他の
AC_MSG_ERROR([bbs2wwwを見つけることができませんパッケージ化することができ、それを最初にGETしてください!])
Fiの
CONFIG_HAVE_WWWは。1 =
他
CONFIG_HAVE_WWW = 0
Fiの
])
// *各を交換してください変数@ .inファイする@ CONFIG_HAVE_WWW
AC_SUBST(CONFIG_HAVE_WWW)
AC_SUBST(BBSSUBDIRS)
m4_include(bbs2www.in)
チェック自動スキャンによって生成され、自動的に//数
ヘッダファイルを#をチェックします。
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([ARPA / inet.h fcntl.h limits.hにmalloc.hをnetdb.h netinetの/ in.h sgtty.h STDLIB.H string.hのSYS /ファイル.h SYS / ioctl.h SYS / param.h SYS /socket.h SYS / TIME.H termio.h termios.h unistd.h utime.h])
のtypedef、構造、およびコンパイラの特性のため#チェック。
AC_HEADER_STAT
AC_C_CONST
AC_C_INLINE
AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_CHECK_TYPES([構造体utimbuf]、[]、[]、[#含む<utime.h>])
AC_CHECK_SIZEOF(INT *)
AC_CHECK_SIZEOF(長い長いINT)
AC_CHECK_SIZEOF(long int型)
AC_CHECK_SIZEOF( int型)
AC_CHECK_SIZEOF(int64型)
AC_CHECK_SIZEOF(INT32)
ライブラリ関数の#をチェックします。
AC_CONFIG_LIBOBJ_DIR(LIB)
AC_FUNC_ALLOCA
AC_FUNC_FORK
AC_FUNC_GETLOADAVG
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_MKTIME
AC_FUNC_MMAP
AC_FUNC_SETPGRP
AC_FUNC_SETVBUF_REVERSED
AC_TYPE_SIGNAL
AC_FUNC_STAT
AC_FUNC_STRFTIME
AC_FUNC_UTIME_NULL
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([アラームのatexit BZERO dup2のftruncateのGETCWDのgethostbyaddrのgethostbynameのgethostname INET_NTOA isasciiはでmemchrのmemset MKDIRと、munmap RMDIR選択ソケットstrcasecmp strcasestr strchrのstrdupはstrerror strncasecmp strpbrk strrchrはstrstr strtolはUTIME memmem群れINET_ATONはinet_pton ISBLANK])
AC_CHECK_TYPES(BOOL)
AC_CHECK_TYPES(sig_t ,,, [書式#include <signal.hに>])
エラー言語を選択DNL
// -有効-サイト
AC_ARG_ENABLE(サイトを、
[--enable-サイト=サイト名
を選択し、サイトの特殊ファイル(サイトのディレクトリを参照してください)]、
[
BBSSITE = $ enableval
]、 [BBSSITE = "なめらか"
SITEDIR =サイト])
テスト-f $ SRCDIR /サイト/ $ BBSSITE.c場合; その後、
SITEDIR =サイト
他
-f $ SRCDIRテスト/サイト/ $ BBSSITE.c IF;その後、
sitedir =サイト
他の
AC_MSG_ERROR([$ BBSSITEのERROR不明なサイト、サイトを参照してください/!])
Fiの
Fiの
//各ファイルを置き換える* .IN @ BBSSITE @変数
AC_SUBST(BBSSITE)
プログラムの#かどうかをチェックします。
AC_PROG_CXX
AC_PROG_AWK
AC_PROG_CC
AC_PROG_LIBTOOL
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB
AC_PROG_YACCの
m4_include(config.lib)
ライブラリの#かどうかをチェックします。
ソフトリンク//ファイルを作ります。場合は、ソースファイルのチェーンlibBBSとサイトディレクトリsrcディレクトリに
AC_CONFIG_LINKS(libBBS / site.c:$ SITEDIR / $ BBSSITE.c
libBBS / site.h:$ SITEDIR / $ BBSSITE.h
のsrc / site.c:$ SITEDIR / $ BBSSITE.c
のsrc / site.h:$ SITEDIR / $ BBSSITE.h
libBBS / default.c:$ SITEDIR /デフォルト。 C
libBBS / default.h:$ SITEDIR / default.h
のsrc / default.c:$ SITEDIR / default.c
のsrc / default.h:$ SITEDIR / default.h
)
のCD libBBS。で私は* [[CH]]。やる
:AC_CONFIG_LINKS(libBBS / $ Iのsrc / $ I)
で行わ
CDを..
ORIGIN_LIBTOOL = $ LIBTOOL
AC_SUBST(ORIGIN_LIBTOOL)
AC_SUBST(SED)
abssrcdir = `CD $ SRCDIR && pwd`は
LIBTOOL = "$ abssrcdir / wrapper.sh"を
//替换* .IN文件中的@ abssrcdir @变量
AC_SUBST(abssrcdir)
//实例化
AC_CONFIG_FILES([Makefileの
libBBS / Makefileに
はlibSystem / Makefileの
rzsz / Makefileのの
デーモン/ Makefileの
mail2bbs / Makefileの
local_utl / Makefileの
サービス/ Makefileのの
サービス/ピップ/ Makefileの
サービス/ワーカー/メイクファイル
サービス/ personaldns /メイクファイルの
SRC / bbsconfig.hの
SRC /メイクファイル])
AC_CONFIG_FILES(wrapper.sh、chmodの+ X wrapper.sh)
AC_OUTPUT
ます。https://www.cnblogs.com/niocai/archive/2011/07/14/2106158.htmlで再現