未知警告组'-Wmaybe-unintialized'Mac OS Sierra

问题描述:

当试图在Mac OS Sierra中编译我的软件时,遇到有关未知编译指示码的问题(请参阅下面的代码段)。据一位同事称,该软件能够在Mac OS X Yosemite中使用相同的clang版本(4.2.1)进行编译。使用的编译标志是:-std=c++11 -stdlib=libc++。使用stdlibc++不是一个选项,因为它不包括std::shared_ptr未知警告组'-Wmaybe-unintialized'Mac OS Sierra

error: unknown warning group '-Wmaybe-uninitialized', ignored 
    [-Werror,-Wunknown-pragmas] 
        #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" 

这里是打印出来的g++ --version

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
Apple LLVM version 8.0.0 (clang-800.0.42.1) 
Target: x86_64-apple-darwin16.1.0 
Thread model: posix 
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin 

不确定在哪里把它从这里,任何输入是非常赞赏。

+2

在MacOS标准的编译器是铛,这是* *大多与GCC兼容。 'g ++'命令只是'clang ++'的别名。如果您需要GCC特定的行为(如您显示的编译指示),那么我建议对这些部分进行条件编译。 –

+0

谢谢你的回复@Someprogrammerdude。好的,这个软件是用'cmake'编译的,我和我的同事都在使用相同的'cmake'配置,而他的作品和我的作品都没有。在cla versions版本和库中,Yosemite和Sierra之间是否有任何显着的区别,可能会影响“-Wmaybe-uninitialized”,并在编译时失败? – Philip

而是写

#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" 

你应该做

#if !defined(__has_warning) || __has_warning("-Wmaybe-uninitialized") 
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" 
#endif