Automake - 如何启用编译器警告

问题描述 投票:0回答:1

我被告知当前的 Automake 文件禁用了一些警告,我们希望在我们的构建中包含完整的警告......

这是相关的 Automake 行。

AM_CXXFLAGS = -std=c++14    
AM_CXXFLAGS += -Wno-memset-elt-size    
AM_CXXFLAGS += -faligned-new    
AM_CXXFLAGS += -DXSD_CXX11    
AM_CXXFLAGS += -Wno-stringop-truncation    
AM_CXXFLAGS += -Wno-stringop-overflow    
AM_CXXFLAGS += -Wno-int-in-bool-context    
AM_CXXFLAGS += -D_FILE_OFFSET_BITS=64    
AM_CXXFLAGS += -D_REENTRANT    
AM_CXXFLAGS += -D__STDC_FORMAT_MACROS    
AM_CXXFLAGS += -fPIC    
AM_CXXFLAGS += -fmessage-length=0    
AM_CXXFLAGS += -Wall    
AM_CXXFLAGS += -Wsign-compare    
AM_CXXFLAGS += -Wfloat-equal    
AM_CXXFLAGS += -Wno-unused-label    
AM_CXXFLAGS += -Wshadow

我很难找到所有这些 gcc 标志的文档。 有人可以告诉我应该删除哪些行,以便在构建中获得完整的警告吗?

makefile build automake
1个回答
0
投票

您有

-Wall
和一些
-Wfoo
以及一些
-Wno-foo
争论。

  • -Wall
    启用一组特定的警告
  • -Wfoo
    启用
    foo
    警告
  • -Wno-foo
    禁用
    foo
    警告

就目前情况而言,您启用了

-Wall
组警告,加上其他一些警告,并减去其他一些警告。

有些违反直觉,一些

-DFOO
-ffoo
参数启用了额外的编译器功能,而这些功能又是产生一些警告所必需的。

如果您想要“所有”警告,则需要查阅特定编译器版本的文档并阅读所有警告、由

-Wall
启用的警告(并非全部),以及编译器提供的其他警告。 在 gcc 上,

-pedantic

还可以启用语言律师类型警告,并且

-Wextra
启用
-Wall
中未包含的许多警告。
为什么只有

许多

警告?有些警告需要特殊的 -f 参数来激活该警告所需的特定编译器功能。

clang 编译器还可以使用 

-pedantic

-Wall
-Wextra
,但它们也有
-Wmost
注意clang的

-Weverything

是用来测试clang编译器的,不是用来编译代码的。

-Weverything
中的一些警告可能是互斥的,即某些程序代码要么产生警告A,要么产生警告B,并且无法编写代码来产生这两种警告。
    

© www.soinside.com 2019 - 2024. All rights reserved.