我可以使用CMake以不同的警告级别编译项目的不同部分吗?

时间:2012-08-16 16:43:05

标签: c++ compiler-errors cmake warnings

我正在开发一个依赖于其他几个库的项目(特别是SFML和Box2D以及其他一些库)。我喜欢在我的警告开始的情况下运行,但我依赖的项目并不是那么严格。

有没有办法可以使用默认警告设置编译库并使用我想要的警告标志编译我的代码?我的CMakeLists.txt中有以下标志列表。注释掉的行是我现在无法打开的东西,因为它们会破坏我的依赖关系。

set(CUSTOM_CFLAGS ${CUSTON_CFLAGS}
    -std=c++0x 
    #-ansi 
    -pedantic
    -Werror 
    -Wall 
    -Wextra 
    #-Weffc++
    -Wshadow 
    -Winit-self 
    -Wsign-promo 
    -Wcast-align
    #-Wlogical-op 
    -Woverloaded-virtual 
    -Wno-unused-parameter 
    #-Wstrict-null-sentinel 
    -Wmissing-include-dirs 
    -Wframe-larger-than=8192 
    #-Wmissing-format-attribute
    -g 
    #Would like this but Box2D hsa a ridiculous amount of it...
    #-Wfloat-equal -Wno-error=float-equal
   )

1 个答案:

答案 0 :(得分:1)

是的,你可以编译一次外部库。然后,您可以将它们包含并链接到您的项目中,而无需重新编译外部内容。要重新编译的唯一剩余外部代码位于库头文件中。写点像

#pragma warning(push)
#pragma warning(disable:2892,2893,2894,4096)
#include <external_header.h>
#pragma warning(pop)

以禁用在外部头文件中弹出的警告。这个pragma的东西不同于编译器到编译器,但是大多数编译器都有这些内容。