[英]Eclipse/Nsight (7.0) and C++11 support
我怎樣才能說服Nsight我正在使用C ++ 11? 換句話說,我在哪里設置相關的發現選項? 使用-std = c ++ 11進行構建即使在Eclipse中也是如此。 我說的是索引器有定義的麻煩。
在Nsight編輯器中,C ++ 11函數被標記為未解析,因為__cplusplus定義是199711L,而不是> = 201103L。
當我創建項目時,在Project Properties > Build > Discovery Options
,檢查了每種語言和每個構建配置Automate discovery of Path and Symbols
的Automate 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內置編譯器設置
並做:
將-std=c++11
添加到Command以獲取如下編譯器規范 :
${COMMAND} -std=c++11 ${FLAGS} ...
現在應該正確設置__cplusplus
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.