簡體   English   中英

切換到GCC 4.8后,Eclipse不更新Android NDK項目的“內置”包含路徑

[英]Eclipse not updating “built-in” include paths for Android NDK Project after switching to GCC 4.8

我有一個使用NDK的Android / Eclipse項目,並且最近通過將以下內容添加到我的Application.mk文件中啟用了c ++ 11支持:

NDK_TOOLCHAIN_VERSION := 4.8 #same result here with clang
APP_CPPFLAGS += -std=c++11

這基本上可以正常工作,可以使用c ++ 11功能並按預期進行編譯。 這適用於ndk-build和Eclipse構建(僅調用nkd-build),但是eclipse代碼解析器現在變得混亂。 當我打開一個使用在c ++ 11中添加到STL中的類型的文件(例如std::unique_ptr )時,出現紅色字形,並且在“ 問題”選項卡中顯示一條錯誤條目,提示Symbol 'unique_ptr' could not be resolved 情況還不錯,但是如果該列表中存在錯誤,Eclipse將拒絕啟動(或調試)該應用程序。 右鍵單擊#include <memory>行,然后選擇“ 打開聲明”也會打開錯誤的(4.6)文件。

C / C ++常規->路徑和符號->包含下檢查項目屬性時,當選中“ 顯示內置值”時,它仍列出舊的(4.6)包含: 屏幕截圖

那些只是從某個地方緩存的,我可以重新生成這些條目嗎? 我顯然已經嘗試清除並重建項目,但沒有任何效果。 如果可以避免,我寧願不手動添加它們,將NDK升級到新版本已經需要進行很多更改,直到再次編譯。 這些條目是從哪里生成的,以及如何觸發更新?

我希望我能對您有一個明確的答案,因為我本人一直在與這個問題作斗爭很長時間,但是我確實有一個不錯的解決方法。 對於初學者,“ CDT管理的構建設置條目”下的“內置”條目是根據jni目錄中Application.mk文件的內容生成的。 沒有其他方法可以更改它們,而這些正是填充在C ++透視圖的項目瀏覽器中的“包含”部分的內容。 但是我看到必須閱讀NDK安裝中的documentation.html才能看到已經在該文件中放入了什么。 問題變成一旦您改變某些東西或呼吸太劇烈,您的內含物就會突然且不可逆轉地變得無法解決。 解決方法是調用每個包含條目的確切路徑,右鍵單擊項目,轉到“ New->Folder ,然后在對話框中單擊“ Advanced ,然后選擇“ Link to Alternate Location (Linked Folder) 然后導航到include文件夾的路徑(如果願意,可以擴展一個變量),將其重命名為描述性的名稱(您不能有4個名為“ include”的鏈接文件夾),然后瞧瞧! 您突然又有了一個可用的工作空間。 我猜想,“包含”部分的功能仍然有些脆弱,至少對於ADT而言如此,這樣做會使包含與項目中實際存在的其他文件處於相同的狀態。 如果正式批准的機制開始可靠地運作,我會感到非常興奮,並且我熱切地等待着這樣的消息。 HTH!

暫無
暫無

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

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