如何告诉AC_SUBST不替换参数中的变量
How to tell AC_SUBST to not substitute variables in arguments?
我正在使用autotools来构建我的项目,我想全局设置AM_CPPFLAGS为-I$(top_srcdir)/include。
https://stackoverflow.com/a/325436/2592351这个答案帮助了我,我正在做"include $(top_srcdir)/include"hack,它工作了。
然而,我想做"AC_SUBST"的方式描述,因为它看起来更干净。问题是当我把这个添加到configure.ac:
时AC_SUBST([AM_CPPFLAGS], [-I$(top_srcdir)/include])
然后$(top_srcdir)扩展得太快,我得到AM_CPPFLAGS = -I/include in subdir/Makefile{, in}。
我不知道如何逃脱。
-I@top_srcdir@/include
-I$(top_srcdir)/include
-I$$(top_srcdir)/include
由于种种原因,这些都失败了。
请帮助。我应该如何编写AC_SUBST,以便$(top_srcdir)在到达Makefile{, in}之前不进行转义?或者我应该使用AC_SUBST以外的东西?
不要在configure.ac
中设置AM_CPPFLAGS
。如果你发现自己在多个Makefile.am
中重复相同的序言,你应该使用非递归自动生成。
但是在这个特殊的情况下,如果你这样做了,你就可以不受惩罚了
AM_CPPFLAGS='-I$(top_srcdir)/include'
AC_SUBST([AM_CPPFLAGS])
因为这个字符串在bash变量中被设置为引号,然后展开为字面量。使用AC_SUBST
来设置它,它被""
引用,然后导致$(top_srcdir)
被shell扩展。
相关文章:
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- 扩展可变参数模板中的变量名称
- 在类构造函数中定义结构变量的参数
- 带有整数的变量参数列表
- 转发变量参数列表以模拟 std::thread
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- 存储稍后要转发的变量参数
- C++具有模板成员变量的类. 和参数内存输出
- 我应该如何在没有变量的情况下将相同的参数传递给 CMAKE 中的多个目标?
- 为变量模板的每个参数调用模板函数
- 具有推导参数的模板函数指针数组变量
- 函数参数变量总是需要 & 或 * 运算符吗?
- 为什么 beginthreadex 线程参数变量在父线程中没有更新
- 在 Metal 着色器代码中,如何定义函数的 in/out 参数变量?
- 如何在函数中使用非参数变量?
- 即将将引用作为函数中的参数传递以更改参数变量的值
- 基于不断变化的参数/变量的XML get值
- cocos2d-x v3 CallFunc作为参数/变量如何
- 在编译时使用c++元编程中的运行时参数(变量)
- 我可以返回一个非参数变量吗?