我经常在我的C++项目中包含外部/第三方库,几乎每次编译代码时它们都包含-W警告消息。
它们位于lib/*
文件夹中。特别是Makefile,这就是我所包含的:
# Add .h and .hpp to the preprocessor build
HEADERS += $(wildcard lib/*.h)
HEADERS += $(wildcard lib/*.hpp)
HEADERS += $(wildcard lib/**/*.h)
HEADERS += $(wildcard lib/**/*.hpp)
HEADERS += $(wildcard lib/**/**/*.h)
HEADERS += $(wildcard lib/**/**/*.hpp)
HEADERS += $(wildcard src/*.h)
HEADERS += $(wildcard src/*.hpp)
HEADERS += $(wildcard src/**/*.h)
HEADERS += $(wildcard src/**/*.hpp)
# Add .c and .cpp files to the build
SOURCES += $(wildcard lib/*.c)
SOURCES += $(wildcard lib/*.cpp)
SOURCES += $(wildcard lib/**/*.c)
SOURCES += $(wildcard lib/**/*.cpp)
SOURCES += $(wildcard lib/**/**/*.c)
SOURCES += $(wildcard lib/**/**/*.cpp)
SOURCES += $(wildcard src/*.c)
SOURCES += $(wildcard src/*.cpp)
SOURCES += $(wildcard src/**/*.c)
SOURCES += $(wildcard src/**/*.cpp)
# FLAGS will be passed to both the C and C++ compiler
FLAGS +=
CFLAGS +=
CXXFLAGS += $(sort $(foreach HEADERS, $(HEADERS), -I$(dir $(HEADERS))))
字符串
有没有可能指定(我在Windows上使用MingGW,所以“gcc”),对于那个lib/*
文件夹,忽略警告消息?保持我的代码/编译干净?它非常无聊的“混乱”与其他库警告为什么编译和检查状态。
1条答案
按热度按时间wbgh16ku1#
您应该能够通过将编译划分为多个部分并应用不同的标志来抑制特定文件的警告。
例如
字符串
注意
-w
将禁止所有警告。如果你想有选择地禁用特定的警告,你可以使用特定的标志,如-Wno-<specific-warning>
。对于包含在源代码中的库头文件,事情就有点棘手了。
一种方法是使用
#pragma
s来禁用包含头的警告。例如
型
这可能有点乏味,但希望比解决包含的标题中的每个警告更乏味=)