有没有办法在每个文件的基础上使用automake设置标志?
特别是,如果我有一个c ++项目,并希望使用-WAll编译所有文件,除了我想要禁用特定警告的文件,我该怎么办?

我尝试过类似的事情:

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

但它不起作用。

EDITED:删除了对automake手册的引用,这实际上是误导(感谢Douglas Leeder)。

有帮助吗?

解决方案

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

其他提示

您无法使用 automake 执行此操作...但可以 make =)将以下行添加到 Makefile.am

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

请参阅 GNU Make文档:特定于目标的变量值了解详情。

你感到困惑 - 该部分指的是自动化的选项。

这是设置automake命令行选项的一种方法:

  

-W CATEGORY   --warnings =类别       输出警告属于类别。类别可以是以下之一:

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将隐藏   关于未使用变量的警告。

     

默认输出的类别是‘语法’并且‘不支持’。   另外,‘ gnu’和‘便携性’   在--gnu和--gnits中启用   严格。

     

环境变量WARNINGS可以包含以逗号分隔的列表   要启用的类别。它会被采取   在命令行之前考虑到   开关,这种方式 - 也将   忽略启用的任何警告类别   警告。也使用此变量   通过其他工具,如autoconf;未知   为此忽略类别   原因。

第17节中列出的每个文件引用了每个Makefile而不是源文件。

我不知道任何每源文件标志设置,但您可以为每个结果二进制文件设置选项:

binaryname_CXXFLAGS
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top