linux 使用automake设置每个文件的标志

rjzwgtxy  于 2023-06-05  发布在  Linux
关注(0)|答案(4)|浏览(190)

有没有一种方法可以在automake中为每个文件设置标志?
特别是,如果我有一个c++项目,并希望使用-WAll编译所有文件,除了一个我想禁用特定警告的文件,我该怎么办?
我尝试了类似的东西:

CXXFLAGS = -WAll ...
bin_PROGRAMS = test
test_SOURCES = main.cpp utility.cpp
utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value

但没有成功
编辑:删除了对汽车手册的引用,这实际上是误导(感谢道格拉斯·利德)。

nkkqxpd9

nkkqxpd91#

你不能用automake来做这个... but can do with make =)将以下行添加到Makefile.am

utility.$(OBJEXT) : CXXFLAGS += -Wno-unused-value

请参阅GNU Make文档:有关详细信息,请参阅目标特定变量值。

r3i60tvu

r3i60tvu2#

Automake只支持每目标标志,而你需要每对象标志。一种方法是创建一个包含对象的小型库:

CXXFLAGS = -Wall ...
bin_PROGRAMS = test
test_SOURCES = main.cpp
test_LDADD = libutility.a
noinst_LIBRARIES = libutility.a
libutility_a_SOURCES = utility.cpp
libutility_a_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value
bcs8qyzn

bcs8qyzn3#

你已经搞混了-那部分是指选择自动化本身。
这是一种设置automake命令行选项的方法:
-W CATEGORY --warnings=category输出属于该类别的警告。类别可以是以下之一:

gnu
    warnings related to the GNU Coding Standards (see Top).
obsolete
    obsolete features or constructions
override
    user redefinitions of Automake rules or variables
portability
    portability issues (e.g., use of make features that are known to be not portable)
syntax
    weird syntax, unused variables, typos
unsupported
    unsupported or incomplete features
all
    all the warnings
none
    turn off all the warnings
error
    treat warnings as errors

可以通过在类别名称前添加“no-”来关闭类别。例如,-Wno-syntax将隐藏有关未使用变量的警告。
默认输出的类别为'syntax'和'unsupported'。此外,在--gnu和--gnits严格性中启用了'gnu'和'portability'。
环境变量WARNINGS可以包含要启用的类别的逗号分隔列表。它将在命令行切换之前被考虑在内,这样-Wnone也将忽略WARNINGS启用的任何警告类别。这个变量也被autoconf等其他工具使用;未知类别因此被忽略。
第17节中列出的每个文件是指每个Makefile,而不是源文件。
我不知道任何每源文件标志设置,但你可以设置每个结果二进制文件的选项:

binaryname_CXXFLAGS
ryhaxcpt

ryhaxcpt4#

要禁用特定编译单元中的特定警告,可以使用#pragma GCC diagnostic ignored -W...,如GCC documentation中所述。

相关问题