[英]How to enable C++11 in Eclipse Juno/Kepler/Luna CDT?
編輯:事實證明這並非特定於Eclipse Kepler。 我不得不對Eclipse Juno使用相同的過程。 問題是,其他帖子似乎缺少回答同一問題的步驟。
我正在使用Eclipse Kepler for C ++,我正在嘗試使用C ++ 11並獲得錯誤。 當我編譯時,我得到了錯誤
錯誤:C ++ 98模式下不允許使用基於范圍的for循環
我按照帖子的說明進行了操作
Eclipse CDT C ++ 11 / C ++ 0x支持
並且為Eclipse Juno提供的解決方案無效。
不同的評論表明重啟日食,清潔和重建。 這並沒有什么不同。
您需要做兩件事,首先需要設置編譯器,然后需要設置CDT的語言處理器。 既然你沒有提到你正在使用哪個編譯器,我會假設它是GCC,但其他編譯器的步驟類似。 (當然,請注意,您需要一個支持C ++ 11的編譯器。)
設置編譯器非常簡單:
此時,您應該能夠重建項目並使其運行。 但是CDT仍然可能顯示C ++ 11包含的錯誤。 以下是解決這個問題的方法:
Eclipse Kepler Service Release 1中的C ++ 11支持(Build id:20130919-0819)
在最新版本的Eclipse Kepler SR1中,您只需要添加-std = c ++ 11
“獲取編譯器規范的命令:”- line應如下所示:
${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
從CDT 8.3( 作為Kepler更新提供 )開始,構建設置中有一個新的方言選項:
我使用Eclipse Kepler並修復它我做了這個:
1 - 右鍵單擊項目>> Proprietes >> C / C ++ Build :: Settings
2 - 去GCC G ++編譯器>>其他>>其他標志
i then added -std=c++11
hit apply and ok
這解決了我的問題!
我希望它有所幫助!
在這里運行eclipse indigo和cdt 8.0.2。 我遵循了所有指南,但是仍然需要手動設置預處理器定義以找到像std :: unique_ptr這樣的東西。 包含文件“memory”檢查這個。 在項目屬性中“C ++常規”的“路徑和符號”下的“符號”選項卡上將__cplusplus設置為201103L。
將方言標志“-std = c ++ 11”添加到項目屬性 - > C / C ++構建 - >設置 - >工具設置(GCC C ++編譯器 - >方言)解決了我在Eclipse Kepler中的問題,除了上述設置。
我正在使用Eclipse Luna,並且在C / C ++ Build - > Settings下沒有“工具設置”。 我DID添加-std = C ++ 11到下編譯器規格的命令行“C / C ++常規- >預處理器包括- >提供者”的建議。 但這仍然不能滿足我的索引器解析emplace()的能力。
所以我查看了頭文件,發現emplace函數依賴於__cplusplus> = 201103L。 所以我只是添加了預處理器符號“__cplusplus”並給它賦值201103。
有點hackish但索引器很高興。 (而makefile定義了我的構建標志,而不是eclipse項目)
MrEricSir提供的解決方案僅在安裝了最新的Eclipse Oxygen CDT后才能運行。 使用Mars CDT對我不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.