1、AM_CONDITIONAL (conditional, condition)
首先开头不是AC而是AM所以它是一个automake宏。在configure.ac中使用,如果条件满足就定义变量。
例如:
AM_CONDITIONAL(BUILD_TIPC, test "x$libzmq_tipc_support" = "xyes")
这条在configure.ac中的语句表示,如果条件测试通过,就在Makefile.am的环境中定义变量BUILD_TPIC。你可以在Makefile.am中这么使用这个变量。
if BUILD_TIPC
test_apps += \
test_connect_delay_tipc \
test_pair_tipc \
test_reqrep_device_tipc \
test_reqrep_tipc \
test_router_mandatory_tipc \
test_shutdown_stress_tipc \
test_sub_forward_tipc \
test_term_endpoint_tipc
表示如果BUILD_TIPC存在就增加附件的编译列表。
2、AC_SUBST (variable, [value])
将shell变量输出到输出文件中,例如:
LTVER="5:0:0"
AC_SUBST(LTVER)
这将变量LTVER输出到Makefile中。同时Makefile.am中可以使用@LTVER@来引用这个变量。
比如你可以用这个功能为编译提供编译选项。
例如:
LIBZMQ_EXTRA_LDFLAGS="-I${norm_path}/include ${LIBZMQ_EXTRA_LDFLAGS}"
AC_SUBST(LIBZMQ_EXTRA_LDFLAGS)
AM_CONDITIONAL(ON_ANDROID, test "x$libzmq_on_android" = "xyes")
这里使用AC_SUBST输出一个变量LIBZMQ_EXTRA_LDFLAGS,该变量在Makefile.am中传递给编译器。在Makefile.am中使用
if ON_ANDROID
libzmq_la_LDFLAGS = \
-avoid-version \
-version-info @LTVER@ \
@LIBZMQ_EXTRA_LDFLAGS@
使用@LIBZMQ_EXTRA_LDFLAGS@进行引用。