簡體   English   中英

Eclipse / Nsight(7.0)和C ++ 11支持

[英]Eclipse/Nsight (7.0) and C++11 support

TL; DR:

我怎樣才能說服Nsight我正在使用C ++ 11? 換句話說,我在哪里設置相關的發現選項? 使用-std = c ++ 11進行構建即使在Eclipse中也是如此。 我說的是索引器有定義的麻煩。

更長的版本:

在Nsight編輯器中,C ++ 11函數被標記為未解析,因為__cplusplus定義是199711L,而不是> = 201103L。

當我創建項目時,在Project Properties > Build > Discovery Options ,檢查了每種語言和每個構建配置Automate discovery of Path and SymbolsAutomate discovery of Path and Symbols選項。 在屬性窗口的底部有一個注釋表示不推薦使用發現方法,因此我針對每種語言和每個構建配置取消選中它。

現在,在Project Properties > General > Preprocessor Include Paths, Macros etc. ,有系統提供的路徑和定義(更准確地說,由提供者提供)。 在列表中我可以看到有問題的__cplusplus。 我可以在CDT用戶設置條目下重新定義它,實際上它將在重建索引后成為新值,但每當我在編輯器中單擊某些內容時,我都會收到錯誤:

An internal error occurred during: "Notifying selection listeners".
org.eclipse.cdt.internal.core.index.composite.CompositingNotImplementedError

那條路線顯然是死路一條。 另一種選擇是在符號選項卡下的Project Properties > General > Paths and Symbols定義新的__cplusplus。 我也可以在那里看到“錯誤的”__cplusplus。 在重建索引時,在編輯器中單擊時,重新定義它會給出與上面相同的錯誤。

另外, CDT Managed Build Setting Entries Provider到底是什么? 我沒有看到任何選擇。 在哪里配置?

當我嘗試使用CDT GCC Built-in Compiler Settings提供程序時,我看到一個字段,我可以輸入命令行參數,但是將-std = c ++ 11放在那里沒有效果,因為該條目不會產生__cplusplus定義。

無關:

在其他新聞中,C ++ 11支持在命令行和makefile中對CUDA Toolkit 7.0很有用。 nVidia決定使用Eclipse,這讓我感到非常難過。 無論我用它做什么,我都只遇到了Eclipse的問題。 我花了一個星期來為項目設置IDE。 我非常討厭它。

使用本機編譯器時,我遇到了與索引器類似的問題; 但是,交叉編譯器工作正常。 使用本機編譯器時,即使C ++方言已設置為C ++ 11並且索引已重建, __cplusplus也被定義為199711L。

索引器可以通過轉到來獲取C ++ 11設置

項目設置 - > C / C ++常規 - >預處理器包括路徑,宏等 - >提供程序 - > CDT GCC內置編譯器設置

並做:

  1. 取消選中使用項目之間共享的全局提供程序
  2. -std=c++11添加到Command以獲取如下編譯器規范

    ${COMMAND} -std=c++11 ${FLAGS} ...

現在應該正確設置__cplusplus

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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