有没有一种方法可以在automake中为每个文件设置标志?
特别是,如果我有一个c++项目,并希望使用-WAll编译所有文件,除了一个我想禁用特定警告的文件,我该怎么办?
我尝试了类似的东西:
CXXFLAGS = -WAll ...
bin_PROGRAMS = test
test_SOURCES = main.cpp utility.cpp
utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value
但没有成功
编辑:删除了对汽车手册的引用,这实际上是误导(感谢道格拉斯·利德)。
4条答案
按热度按时间nkkqxpd91#
你不能用
automake
来做这个... but can do withmake
=)将以下行添加到Makefile.am
:请参阅GNU Make文档:有关详细信息,请参阅目标特定变量值。
r3i60tvu2#
Automake只支持每目标标志,而你需要每对象标志。一种方法是创建一个包含对象的小型库:
bcs8qyzn3#
你已经搞混了-那部分是指选择自动化本身。
这是一种设置automake命令行选项的方法:
-W CATEGORY --warnings=category输出属于该类别的警告。类别可以是以下之一:
可以通过在类别名称前添加“no-”来关闭类别。例如,-Wno-syntax将隐藏有关未使用变量的警告。
默认输出的类别为'syntax'和'unsupported'。此外,在--gnu和--gnits严格性中启用了'gnu'和'portability'。
环境变量WARNINGS可以包含要启用的类别的逗号分隔列表。它将在命令行切换之前被考虑在内,这样-Wnone也将忽略WARNINGS启用的任何警告类别。这个变量也被autoconf等其他工具使用;未知类别因此被忽略。
第17节中列出的每个文件是指每个Makefile,而不是源文件。
我不知道任何每源文件标志设置,但你可以设置每个结果二进制文件的选项:
ryhaxcpt4#
要禁用特定编译单元中的特定警告,可以使用
#pragma GCC diagnostic ignored -W...
,如GCC documentation中所述。