似乎无法在我的项目中包含一个文件夹的路径,该文件夹已作为链接资源导入到我的项目中

时间:2017-03-15 16:59:33

标签: eclipse eclipse-cdt

我的工作区中有两个文件夹:

  1. FOO
  2. 在Eclipse中打开我的项目 foo 后,我导航到我的项目中的src文件夹(或inc文件夹 - 它没有任何区别),然后从文件菜单导航,我选择导入,然后选择现有文件系统,然后选择 bar 的路径,并选择创建工作区中的链接< /强>

    (在对话框中,这将自动检查两个子选项:“创建虚拟文件夹”和“创建相对于”PROJECT_LOC / WORKSPACE_LOC /等的链接位置。也许这是一个没有实际意义的点。)

    现在,当然,我需要以某种方式将链接资源 bar 中的标题包含到我的项目 foo 中。

    因此,我点击了项目的属性。在 C / C ++ General 下,在路径和符号标签中,我将路径(作为工作区路径)添加到链接资源包含目录下。

    我尝试了两个“/ bar”(这是 bar 实际存在于工作区中的位置),

    OR,

    “/ $ {ProjName} / src / bar”(这是 bar 作为链接资源添加到项目中的位置),

    并且在这两种情况下都无法找到链接资源中的头文件。

    但是,如果我改为,在此项目属性窗口中,包括链接资源 bar 的绝对路径,例如 / opt / workspace / bar ,然后可以找到头文件。

    这似乎是日食中的一个错误,如下所示。我找不到是否有任何针对此问题的修复程序。

    https://bugs.eclipse.org/bugs/show_bug.cgi?id=72940 https://bugs.eclipse.org/bugs/show_bug.cgi?id=122945

1 个答案:

答案 0 :(得分:2)

您面临的问题是如何在项目中表示链接文件夹(虚拟与非虚拟)以及如何解析-I参数。

在选择创建虚拟文件夹时,导入文件系统向导会有很大的不同。

创建虚拟文件夹

在这种情况下,所有中间文件夹都是虚拟的,即它们不对应于文件系统上的文件夹。你可以在以下几个地方看到这个:

  1. 图标叠加层是一个空白方块:
  2. enter image description here

    1. 将文件添加到文件系统上的该目录不会使文件出现在IDE中。这是因为单个文件是链接的,而不是它们包含的文件夹。
    2. 您可以在项目属性中看到这样的内容:
    3. enter image description here

      效果这些文件夹是虚拟的,它们并不对应于磁盘上的任何实际文件,因此在构建时没有等效的文件传递给GCC,因此它们被省略。

      创建虚拟文件夹未选中。

      在这种情况下,链接只是根元素。你可以在以下几个地方看到这个:

      1. 图标叠加层是一种快捷方式箭头:
      2. enter image description here

        1. 将文件添加到文件系统上的该目录将使该文件出现在IDE中。
        2. 您可以在项目属性中看到这样的内容:
        3. enter image description here

          效果这些文件夹是链接的,因此它们对应于磁盘上的某些内容,因此在构建时它们会被传递。

          最终并发症

          最后一个复杂因素是"/${ProjName}/src/bar/inc"不是引用路径的正确方法。您正在此处为GCC构造参数,因此您必须解析从位置的工作空间表示到磁盘上的位置。因此,使用workspace_loc变量"${workspace_loc:/${ProjName}/src/bar/inc}"

          包围整个事物
          "/${ProjName}/src/bar" -> /foo/src/bar/inc
          "${workspace_loc:/${ProjName}/src/bar/inc}" -> /tmp/so/git/bar/inc
          

          GitHub上的完整示例

          我在github上添加了一个完整的示例,然后我将生成的Makefile保留下来供您参考。在查看Makefile时,我的git root是/tmp/so/git