【问题标题】:Eclipse not updating "built-in" include paths for Android NDK Project after switching to GCC 4.8Eclipse 在切换到 GCC 4.8 后未更新“内置”包含 Android NDK 项目的路径
【发布时间】:2014-07-19 07:11:24
【问题描述】:

我有一个使用 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),我在 Problems 选项卡中看到红色曲线和一个错误条目,上面写着 Symbol 'unique_ptr' could not be resolved。这不会那么糟糕,但是如果该列表中存在错误,Eclipse 将拒绝启动(或调试)应用程序。右键单击 #include <memory> 行并选择 Open Declaration 也会打开错误的 (4.6) 文件。

当检查 C/C++ General --> Paths and Symbols --> Includes 下的项目属性时,它仍然会列出旧的 (4.6) include Show Built-in values em> 打勾:Screenshot

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-14
      • 2016-11-02
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多