2013-06-22 129 views
1

有沒有人得到如何讓C + + 11在OS X山獅下使用SublimeClang的說明。SublimeClang OSX Mountain Lion C++ 11

如果我使用非C++ 11 libs和代碼它很高興,但只要我嘗試使用像std :: shared_ptr這樣的東西它呻吟。

我明顯錯過了簡單的東西,任何幫助將不勝感激。

我已經爲-std = C++ 11設置了額外的選項,所以我真的不知道我在想什麼。

布萊爾

回答

2

在OS X 10.9小牛以下配置爲我工作:在命令行上

  1. 獲取與OS X中的工作編輯提供clang++。附加-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

  2. SublimeClang默認添加它自己的包含文件,這在我的系統上已經過時了。設置此偏好SublimeClang:"dont_prepend_clang_includes": true

  3. 啓用在SublimeClang語言選項C++ 11: "additional_language_options":{"c++": ["--std=c++11"]}
+0

我更新了XCode並將它更新爲版本6.0(LLVM 3.5svn)。現在SublimeClang壞了。問題是/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault。xctoolchain/usr/lib/C++/v1不存在了!這意味着任何標準庫都消失了。 – Xplane

2

它可能爲時已晚,但我發現如何做到這一點。 這個問題是因爲鏗鏘聲使用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++": [] 
    } 
} 

我可以這樣做。

如果你不使用自制軟件,它將不會如此不同。

+0

作爲替代我認爲你可以使用的libC++附帶OS X,而不是得到一個更新的libstdC++。 libC++是OS X的C++ 11標準庫的新實現。 – bames53

+0

是的,我嘗試過,但是當我使用libC++時,在完整的建議中有__1命名空間(我知道這個命名空間是用於聲明使用libC++而不是libstdC++),我無法找到如何刪除它。 @ bames53 – Sho