我使用autotools来构建我的项目,我想将AM_CPPFLAGS全局设置为-I $(top_srcdir)/ include。
https://stackoverflow.com/a/325436/2592351这个回答帮助了我,我做了"包括$(top_srcdir)/ include"黑客,它的工作原理。
但是我想做" AC_SUBST"在那里描述的方式看起来更干净。问题是我将它添加到我的configure.ac:
AC_SUBST([AM_CPPFLAGS], [-I$(top_srcdir)/include])
然后$(top_srcdir)过早展开,我在subdir / Makefile {,。in}中得到AM_CPPFLAGS = -I / include。
我不知道怎么逃避它。
-I@top_srcdir@/include
-I\$(top_srcdir)/include
-I$$(top_srcdir)/include
所有这些因各种原因而失败。
请帮忙。我应该如何编写AC_SUBST,以便$(top_srcdir)在获取Makefile {,。in}之前不会被转义?或者我应该使用AC_SUBST以外的东西?
答案 0 :(得分:1)
请勿在{{1}}中设置AM_CPPFLAGS
。如果您发现自己在多个configure.ac
中重复相同的序言,那么您应该使用non-recursive automake。
但在这种特殊情况下,如果你这样做,你应该侥幸成功
Makefile.am
因为然后字符串在bash变量中被引用,然后作为文字扩展。使用AM_CPPFLAGS='-I$(top_srcdir)/include'
AC_SUBST([AM_CPPFLAGS])
进行设置,AC_SUBST
引用它,然后导致""
进行shell扩展。