簡體   English   中英

如何在Eclipse Juno / Kepler / Luna CDT中啟用C ++ 11?

[英]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的編譯器。)

設置編譯器非常簡單:

  1. 右鍵單擊項目,然后單擊“屬性”
  2. 在C / C ++ Build下單擊“設置”
  3. 在GCC C ++編譯器下,單擊“其他”
  4. 在Other Flags框中,將“-std = c ++ 11”附加到標記列表中。
  5. 單擊“應用”和“確定

此時,您應該能夠重建項目並使其運行。 但是CDT仍然可能顯示C ++ 11包含的錯誤。 以下是解決這個問題的方法:

  1. 右鍵單擊項目,然后單擊“屬性”
  2. 在C / C ++ General下單擊“預處理器包含路徑,宏”
  3. 選擇“提供者”選項卡
  4. 列表中應該有一個項目,例如“GCC Built in Compiler Settings”。 選擇此條目。
  5. 取消選中“使用全局提供商...”選項
  6. 在列表下面有一個框,上面寫着“獲取編譯器規范的命令”。 在此附加“-std = c ++ 0x”。
  7. 使用右側的“上移”按鈕將“GCC內置編譯器設置”提供程序移動到列表頂部。
  8. 單擊Apply,然后單擊OK。
  9. 回到Eclipse工作區,選擇Project Menu,C / C ++ Index,然后單擊“Re-resolved unresolved includes”。

Eclipse Kepler Service Release 1中的C ++ 11支持(Build id:20130919-0819)

在最新版本的Eclipse Kepler SR1中,您只需要添加-std = c ++ 11

  1. 右鍵單擊您的項目,然后單擊“ 屬性”
  2. 導航到C / C ++常規預處理器包括路徑,宏等。
  3. 選擇“ 提供者”選項卡
  4. -std = c ++ 11添加到Command以獲取編譯器規范:
  5. 應用更改后,應自動生成索引。

“獲取編譯器規范的命令:”- line應如下所示:

${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11

從CDT 8.3( 作為Kepler更新提供 )開始,構建設置中有一個新的方言選項:

http://wiki.eclipse.org/CDT/User/NewIn83#Build

我使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM