请教一下AC_DEFUN宏
最近在研究autoconf,其中有一个内置的宏AC_DEFUN,看了半天没太弄明白是怎么回事。希望能够得到大家的指教。
下边是截取的部分代码:
- 6 dnl
- 7 dnl KKK_CHECK_LIB ( -- macro to check availability of a library
- 8 dnl $1: LIBRARY-NAME, -- descriptive name (only for printout)
- 9 dnl $2: HEADER, -- optional: header file to #include
- 10 dnl $3: FUNCTION, -- optional: function WITH ARG LIST, e.g. floor(0.5)
- 11 dnl $4: CFLAGS, -- optional: compiler flags
- 12 dnl $5: LDFLAGS, -- optional: linker flags
- 13 dnl $6: RESULT-VAR -- will contain "yes" or "no"
- 14 dnl $7: ACTION-IF-FOUND
- 15 dnl $8: ACTION-IF-NOT-FOUND
- 16 dnl )
- 17 dnl
- 18 AC_DEFUN(KKK_CHECK_LIB,[
- 19 save_CXXFLAGS=$CXXFLAGS
- 20 save_LIBS=$LIBS
- 21
- 22 CXXFLAGS="$4"
- 23 LIBS="$5"
- 24
- 25 AC_MSG_CHECKING(for $1 with CFLAGS="$4" LIBS="$5")
- 26
- 27 AC_LINK_IFELSE(
- 28 [AC_LANG_PROGRAM([[#include <$2>]], [[$3;]])],
- 29 [AC_MSG_RESULT(yes); $6=yes; $7],
- 30 [AC_MSG_RESULT(no); $6=no; $8])
- 31
- 32 CXXFLAGS=$save_CXXFLAGS
- 33 LIBS=$save_LIBS
- 34 ])
复制代码autoconf手册上关于此宏的说明如下:
AC_DEFUN (name, [body ])
[Macro]
Autoconf macros are defined using the AC_DEFUN macro, which is similar to the M4 builtin m4_define macro; this creates a macro named name and with body as its expansion. In addition to defining a macro, AC_DEFUN adds to it some code that is used to constrain the order in which macros are called, while avoiding redundant output
根据我的理解,name应该是自定义的宏的名称,后边的body应该就是它的具体扩展(expansion)吧?但是在body中的代码一时就是看不明白。出现的$4、$5也让人觉得莫名其妙。前边有关于KKK_CHKEC_LIB的注释,应该是指明的每个$N 代表的含义。我一下子就彻底混乱了。
每个AC_DEFUN中的name到底应该如何定义?哪位能帮忙解读一下这段代码吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论