有没有人得到关于如何让 C++11 在 OS X 山狮下使用 SublimeClang 的说明。
如果我使用非 C++11 库和代码,它会很高兴,但是一旦我尝试使用 std::shared_ptr 之类的东西,它就会呻吟。
我显然错过了一些简单的东西,任何帮助将不胜感激。
我也将附加选项设置为 -std=c++11 所以我真的不知道我错过了什么。
布莱尔
有没有人得到关于如何让 C++11 在 OS X 山狮下使用 SublimeClang 的说明。
如果我使用非 C++11 库和代码,它会很高兴,但是一旦我尝试使用 std::shared_ptr 之类的东西,它就会呻吟。
我显然错过了一些简单的东西,任何帮助将不胜感激。
我也将附加选项设置为 -std=c++11 所以我真的不知道我错过了什么。
布莱尔
可能为时已晚,但我找到了方法。这件事是因为clang使用gcc-4.2的头文件,它很老,不支持C++ 11。
要完成 C++11 代码,您必须获取更新的 gcc 并复制它使用的包含路径。如果您有自制软件,请打开终端并输入
brew tap homebrew/versions
brew install gcc48
您可以使用这两行安装 gcc-4.8 和新的 libstdc++。现在,创建一些 c++ 文件并尝试使用带有 -v 选项的 g++-4.8。
g++-4.8 -v example.cpp
-v 选项告诉 gcc 显示详细的日志。在输出中,应该有一些这样的行。
#include <...> search starts here:
/usr/local/Cellar/gcc48/4.8.1/gcc/lib/gcc/x86_64-apple-darwin12.4.1/4.8.1/../../../../include/c++/4.8.1
/usr/local/Cellar/gcc48/4.8.1/gcc/lib/gcc/x86_64-apple-darwin12.4.1/4.8.1/../../../../include/c++/4.8.1/x86_64-apple-darwin12.4.1
/usr/local/Cellar/gcc48/4.8.1/gcc/lib/gcc/x86_64-apple-darwin12.4.1/4.8.1/../../../../include/c++/4.8.1/backward
/usr/local/Cellar/gcc48/4.8.1/gcc/lib/gcc/x86_64-apple-darwin12.4.1/4.8.1/include
/usr/local/include
/usr/local/Cellar/gcc48/4.8.1/gcc/include
/usr/local/Cellar/gcc48/4.8.1/gcc/lib/gcc/x86_64-apple-darwin12.4.1/4.8.1/include-fixed
/usr/include
/System/Library/Frameworks
/Library/Frameworks
End of search list.
这些路径是 gcc4.8 用来查找标头的。打开SublimeClang.sublime-settings--User,把这些路径和“-std=c++11”这样放。
{
"options":[
"-I/usr/local/Cellar/gcc48/4.8.1/gcc/lib/gcc/x86_64-apple-darwin12.4.1/4.8.1/../../../../include/c++/4.8.1",
"-I/usr/local/Cellar/gcc48/4.8.1/gcc/lib/gcc/x86_64-apple-darwin12.4.1/4.8.1/../../../../include/c++/4.8.1/x86_64-apple-darwin12.4.1",
"-I/usr/local/Cellar/gcc48/4.8.1/gcc/lib/gcc/x86_64-apple-darwin12.4.1/4.8.1/../../../../include/c++/4.8.1/backward",
"-I/usr/local/Cellar/gcc48/4.8.1/gcc/lib/gcc/x86_64-apple-darwin12.4.1/4.8.1/include",
"-I/usr/local/include",
"-I/usr/local/Cellar/gcc48/4.8.1/gcc/include",
"-I/usr/local/Cellar/gcc48/4.8.1/gcc/lib/gcc/x86_64-apple-darwin12.4.1/4.8.1/include-fixed",
"-I/usr/include",
"-I/System/Library/Frameworks",
"-I/Library/Frameworks"
],
"additional_language_options":
{
"c++" :[
"-std=c++11"
],
"c": [],
"objc": [],
"objc++": []
}
}
我可以这样做。
如果您不使用自制软件,它不会有太大的不同。
在 OS X 10.9 Mavericks 上,以下配置对我有用:
clang++
使用命令行上提供的 OS X 进行工作编译。附加-v
命令行选项以获取它使用的系统包含目录的列表。对我来说,这些是:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.0/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
SublimeClang 默认添加自己的包含文件,在我的系统上这些文件已经过时了。为 SublimeClang 设置此首选项:"dont_prepend_clang_includes": true
"additional_language_options":{"c++": ["--std=c++11"]}