gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:48:02 24 4
gpt4 key购买 nike

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

  1. foo
  2. 酒吧

在 Eclipse 中打开我的项目 foo 后,我导航到项目中的 src 文件夹(或 inc 文件夹 - 这没有区别),然后从 file 菜单,我选择了import,然后是Existing Filesystem,然后将路径提供给bar,并选择了Create links in workspace.

(在该对话中,这将自动检查两个子选项:“创建虚拟文件夹”和“创建相对于”PROJECT_LOC/WORKSPACE_LOC/等的链接位置。也许这是一个有争议的问题。)

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

因此,我单击项目的属性。在 C/C++ General 下,在 Paths and Symbols 选项卡中,我将路径(作为工作区路径)添加到链接资源 bar包含的目录 下。

我尝试了两个“/bar”(bar 实际上存在于工作区中),

或者,

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

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

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

这似乎是 eclipse 中的一个错误,如下所示。我找不到是否针对此问题实现了任何修复。

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

最佳答案

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

导入文件系统向导在选择是否创建虚拟文件夹时会做一些非常不同的事情。

选中

创建虚拟文件夹

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

  1. 图标叠加层是一个空白方 block :

enter image description here

  1. 将文件添加到文件系统上的该目录不会使该文件出现在 IDE 中。这是因为链接的是单个文件,而不是它们所在的文件夹。
  2. 您可以在项目属性中看到这一点,如下所示:

enter image description here

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

创建虚拟文件夹未选中。

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

  1. 图标叠加是一个快捷方式类型的箭头:

enter image description here

  1. 将文件添加到文件系统上的该目录将使该文件出现在 IDE 中。
  2. 您可以在项目属性中看到这一点,如下所示:

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

关于eclipse - 似乎无法在我的项目中包含文件夹的路径,该文件夹已作为链接资源导入到我的项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42816181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com