Autoconf宏定制与交叉编译指南
1. 定制Autoconf宏
在开发过程中,当标准的Autoconf宏无法满足特殊需求时,我们可以对其进行定制。以下是一个修改AC_CHECK_LIB宏的示例代码:
LIBS="-lfancy $LIBS" w AC_LINK_IFELSE([AC_LANG_PROGRAM( [[class Fancy { public: void execute(int i, int j); };]], [[ MyClass test; test.execute(1, 1);]])], [AS_VAR_SET([ac_Lib], [yes])], [AS_VAR_SET([ac_Lib], [no])]) LIBS=$ac_check_lib_save_LIBS]) AS_VAR_IF([ac_Lib], [yes], [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIBFANCY)) LIBS="-lfancy $LIBS" ], [])dnl AS_VAR_POPDEF([ac_Lib])dnl # --- End of modified version of AC_CHECK_LIB AC_OUTPUT这段代码将参数占位符替换为具体的库和函数名,并添加了AC_LANG_PROGRAM生成程序的前言和主体。同时,移除了一些与可选参数相关的无关文本。不过,这段代码比简单调用AC_CHECK_LIB更复杂,建议将其封装