Eclipse未更新“内置”包括切换到GCC 4.8后Android NDK Project的路径

时间:2014-05-29 17:17:30

标签: android c++ eclipse c++11 android-ndk

我有一个Android / Eclipse项目,它使用NDK和我最近启用的c ++ 11支持,将以下内容添加到我的 Application.mk 文件中:

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),我在 Problems 选项卡中显示红色曲线和错误条目{{ 1}}。这不会很糟糕,但如果该列表中存在错误,则Eclipse拒绝启动(或调试)应用程序。右键单击Symbol 'unique_ptr' could not be resolved行并选择打开声明也会打开错误的(4.6)文件。

C / C ++ General - >下检查项目属性时。路径和符号 - >包含,当选中显示内置值时,它仍会列出旧的(4.6)包含:Screenshot

那些只是从某个地方缓存,我可以让它重新生成这些条目吗?我显然试图清理和重建项目,没有任何效果。如果可以避免,我宁愿不手动添加它们,将NDK升级到新版本需要进行相当多的更改,直到再次编译为止。这些条目从哪里生成以及如何触发更新?

1 个答案:

答案 0 :(得分:1)

我希望我可以说我有一个明确的答案,因为我自己一直在与这个问题作斗争很长一段时间,但我确实有一个不错的解决方法。对于初学者,“CDT托管构建设置条目”下的“内置”条目是根据位于Application.mk目录中的jni文件的内容生成的。没有其他方法可以更改它们,这些是填充C ++透视图的Project Explorer中的“Includes”部分。但我看到必须阅读NDK安装中的documentation.html以查看该文件中已放入的内容。那么问题就变成了,一旦你改变了某些东西或者呼吸太猛,你的包含就会突然而且不可逆转地变得无法解决。解决方法是回忆每个包含条目的确切路径,右键单击项目,转到New->Folder,然后在对话框中单击Advanced,然后选择Link to Alternate Location (Linked Folder)。然后导航到包含文件夹的路径(或扩展变量,如果你喜欢),重命名为描述性的东西(你不能有4个链接的文件夹名为“include”),并且vo!你突然又有了一个可用的工作区。我想“包含”部分功能仍然有点脆弱,至少对于ADT而言,这样做会使包含与实际在项目中的其他文件处于同一基础。如果官方批准的机制开始可靠地工作,我会很激动,我急切地期待着这样的消息。 HTH!