【发布时间】:2016-11-23 09:57:24
【问题描述】:
尝试在 Mac OS Sierra 中编译我的软件时,我遇到了关于未知编译指示的问题(请参阅下面的 sn-p)。据一位同事介绍,该软件能够在 Mac OS X Yosemite 中以相同的 clang 版本(4.2.1)进行编译。使用的编译标志是:-std=c++11 -stdlib=libc++。不能使用stdlibc++,因为它不包括std::shared_ptr。
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
不确定从哪里获取它,非常感谢任何输入。
【问题讨论】:
-
在 macOS 上,标准编译器是 Clang,它大部分与 GCC 兼容。命令
g++只是clang++的别名。如果您需要 GCC 特定的行为(例如您显示的编译指示),那么我建议对这些部分进行条件编译。 -
感谢您的回复@Someprogrammerdude。好的,该软件是使用
cmake编译的,我和我的同事都使用相同的cmake配置,而他的作品和我的作品没有。在可能会干扰'-Wmaybe-uninitialized'并使其在编译时失败的clang 版本和库方面,优胜美地和Sierra 之间是否存在显着差异?
标签: c++ clang pragma macos-sierra libc++