繁体   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