configure.ac范例二
2015-11-30 15:45
267 查看
变量在configure.ac,makefile.am,makefile,config.h中怎么传递。
比如你如何更具configure的参数让一部分源代码加入到编译,或者根据不同的cpu或者平台决定哪些代码需要编译哪些不编译。
AM_CONDITIONAL (conditional, condition)
首先开头不是AC而是AM它是一个automake宏。在configure.ac中使用,如果条件满足就定义变量。
例如:
这条在configure.ac中的语句表示,如果条件测试通过,就在Makefile.am的环境中定义变量BUILD_TPIC。你可以在Makefile.am中这么使用这个变量。
表示如果BUILD_TIPC存在就增加附件的编译列表。
AC_SUBST (variable, [value])
将shell变量输出到输出文件中,例如:
这将变量LTVER输出到Makefile中。同时Makefile.am中可以使用@LTVER@来引用这个变量。
比如你可以用这个功能为编译提供编译选项。
例如:
这里使用AC_SUBST输出一个变量LIBZMQ_EXTRA_LDFLAGS,该变量在Makefile.am中传递给编译器。在Makefile.am中使用
使用@LIBZMQ_EXTRA_LDFLAGS@进行引用。
比如你如何更具configure的参数让一部分源代码加入到编译,或者根据不同的cpu或者平台决定哪些代码需要编译哪些不编译。
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存在就增加附件的编译列表。
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@进行引用。
相关文章推荐
- C/C++ 宏详细解析
- 深入探讨:宏、内联函数与普通函数的区别
- C++十六进制宏的用法详解
- C++基础入门教程(二):数据、变量、宏等
- 枚举和宏的区别详细解析
- 浅析c++ 宏 #val 在unicode下的使用
- 如何在C语言的宏中使用类型关键字
- 树形结构
- 巧用可变参数宏、编译器内置宏和printf输出调试信息
- 用宏获取函数名
- C语言之“宏”
- do...while(0)在宏定义中的巧妙用法
- do...while(0)在宏定义中的巧妙用法
- 万能类型的设计
- office(excel/word/ppt)宏工程,vba工程密码去除
- C/C++预处理器总结
- 黑马程序员---【C语言】06预处理命令
- typedef和define区别
- 头文件卫士
- #ifdef #endif 简要说明