Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用automake设置每个文件的标志_Linux_Gcc_Automake - Fatal编程技术网

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

Linux 使用automake设置每个文件的标志,linux,gcc,automake,Linux,Gcc,Automake,automake是否有一种按文件设置标志的方法? 特别是,如果我有一个C++项目,并且想用-WALL编译所有文件,除了一个文件,我想禁用一个特定的警告,我能做什么? 我试过这样的方法: CXXFLAGS = -WAll ... bin_PROGRAMS = test test_SOURCES = main.cpp utility.cpp utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value 但它不起作用 编辑:删除了对automake手册的引用,

automake是否有一种按文件设置标志的方法?
特别是,如果我有一个C++项目,并且想用-WALL编译所有文件,除了一个文件,我想禁用一个特定的警告,我能做什么?

我试过这样的方法:

CXXFLAGS = -WAll ...
bin_PROGRAMS = test
test_SOURCES = main.cpp utility.cpp
utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value
但它不起作用


编辑:删除了对automake手册的引用,这实际上是误导性的(多亏了Douglas Leeder)。

您有点困惑-该部分指的是automake本身的选项

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

-W类 --警告=类别 属于该类别的输出警告。类别可以是以下各项之一:

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 
可以通过在类别名称前加上“否-”来关闭类别。 例如,-Wno语法将隐藏 关于未使用变量的警告

默认情况下输出的类别为“syntax”和“unsupported”。 此外,“gnu”和“可移植性” 在--gnu和--gnits中启用 严格

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

第17节中列出的per文件指的是per Makefile,而不是源文件

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

binaryname_CXXFLAGS

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

有关详细信息,请参阅。

现在的问题已经很老了,但答案很有趣,谢谢:)