在configure.ac中,我定义了AM_CXXFLAGS
AC_SUBS([AM_CXXFLAGS], "-Wall -Wextra -Werror -std=gnu++11"])
在Makefile.am中我需要在我的程序中禁用警告
bin_Programs = foo bar
# Works
foo_CXXFLAGS = $(AM_CXXFLAGS) -Wno-error=unused
foo_SOURCES = foo.cc
# Does not work, results in CXXFLAGS being just the -Wno-error=unused
bar_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/include
bar_CXXFLAGS = $(AM_CXXFLAGS) -Wno-error=unused
bar_SOURCES = bar.cc
为什么酒吧不起作用?如何解决?
旁注:vim语法高亮显示将第二个AM_CXXFLAGS标记为红色
答案 0 :(得分:3)
首先,它应该是bin_PROGRAMS
,而不是bin_Programs
。它是AC_SUBST
,而不是AC_SUBS
。
请勿从配置脚本更改AM_*FLAGS
,这不是应该如何使用它们。
参见FAQ,它有一个你要做的事情的例子;你应该AC_SUBST
进入一个新的变量,比如WARNINGCFLAGS
,并让Makefile.am像:
AM_CXXFLAGS = $(WARNINGCFLAGS) -Wno-error=unused
并完全删除{foo|bar}_CXXFLAGS
,因为在此更改后不需要它们。