【问题标题】:Search entire project for includes in Eclipse CDT在整个项目中搜索包含在 Eclipse CDT 中
【发布时间】:2010-09-21 09:42:24
【问题描述】:

我有一个庞大的现有 C++ 代码库。通常,代码库的用户使用 gvim 编辑源代码,但我们想开始使用 Eclipse 中漂亮的 IDE 功能。代码库有一个广泛的目录层次结构,但由于我们在构建过程中使用了一些巫术,源文件使用了没有路径的包含指令。当我在 Eclipse 中将源链接到我的项目时,索引器抱怨它找不到任何头文件(因为我们没有在包含中指定路径。)如果我手动将工作区中的目录添加到包含路径,那么一切都很好,但显然手动添加数百个目录是不可行的。是否有一种简单的方法可以告诉 Eclipse 在项目中的任何位置查找包含文件,而不必一个一个地添加它们?如果没有,那么任何人都可以建议一个好的起点,比如要扩展哪些类,编写一个插件来在创建/修改时扫描项目并以编程方式将所有目录添加到包含路径?

【问题讨论】:

    标签: c++ eclipse eclipse-cdt


    【解决方案1】:

    CDT 管理构建路径的方式是查看项目目录基础中的 .cdtbuild xml 文件(它在 Windows 上可能是不同的名称...不确定)

    在这你应该看到类似的东西

    <option id="gnu.c.compiler.option.include.paths....>
    <listoptionValue builtIn="false" value="&quot;${workspace_loc:/some/path}$quot;" />
    <listOptionValue ... />
    
    ...
    </option>
    

    这是放置您在 gui 中配置的所有构建路径的位置。使用一个简单的 perl 脚本来遍历项目并生成所有 listOptionValue 条目,将所有目录添加到此应该很容易。

    这显然不是理想的方法。但我很好奇,你从什么构建系统迁移,如果它是基于 make 的,你应该能够让 eclipse 使用你的 make 文件。

    【讨论】:

      【解决方案2】:

      此功能已在当前的 CDT 开发流程中实现,并将在 CDT 6.0 中提供,CDT 6.0 将于 2009 年 6 月与 Eclipse 3.5 一起发布。

      基本上,如果您有一个#include,并且头文件存在于您的项目中,那么 CDT 将能够找到它,而无需手动设置包含路径。

      如果您现在需要该功能,可以下载并安装最新的 CDT 开发版本。

      Eclipse Bugzilla:https://bugs.eclipse.org/bugs/show_bug.cgi?id=21356
      最新 CDT 6.0 版本:http://download.eclipse.org/tools/cdt/builds/6.0.0/index.html

      【讨论】:

        【解决方案3】:

        通过阅读this Eclipse CDT FAQ entry,听起来如果您从 Eclipse 中启动构建并且您的构建在实际启动 gcc 之前输出了 gcc / g++ 命令,则 Eclipse 可以自动生成包含目录的列表/g++。您可以通过在 Project Properties 下选择 C/C++ Build 类别并在对话框右侧查找 Build Command 选项来更改 Eclipse 启动构建的方式。

        【讨论】:

        • 我刚刚对此进行了测试——它以最不舒服的方式工作。它正在解析构建日志,并将来自 g++ -I/some/path 行的包含路径添加到“系统包含”中。使用 .cproject 文件并自己添加它们,允许在 VC 中拥有它的版本。自动发现不会。
        【解决方案4】:

        根据您在构建过程中使用的 voodoo 数量,Eclipse 可能无法正确解析您的源文件,尤其是当您为不同的源文件具有类似命名的标头时。如果您真的想充分利用 Eclipse,您将需要确保无论您使用何种设置都不会混淆解析器。我个人建议有一个简单的布局和构建过程。

        至于手头的问题,一一添加目录几乎是您最好的选择。

        【讨论】:

          猜你喜欢
          • 2011-04-01
          • 2012-10-25
          • 1970-01-01
          • 2011-05-26
          • 2011-08-12
          • 1970-01-01
          • 2017-11-24
          • 1970-01-01
          • 2011-04-01
          相关资源
          最近更新 更多