Eclipse项目通过环境变量链接资源

问题描述 投票:0回答:4

我在设置 Eclipse C++ 项目时遇到问题。我需要从不同的目录链接源,在我的环境中,我需要的源有时会移动(例如,当我总是想要当前位于像

/aaa/bbb/v1.2.3/src
这样的目录中的子系统的最新版本时)。我总是通过linux环境变量知道我想要的源的位置,比如
$SYSTEM1_LATEST_ROOT
。如果没有这个,每当我应该从新位置选择源时,我都需要更新我的所有项目。

我找不到将环境变量包含在链接资源的路径中的方法。包含目录工作完美(这些目录在我的

.cproject
文件中定义),例如 (
.cproject
):

<option id="..." name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
    ...
    <listOptionValue builtIn="false" value="${SYSTEM1_LATEST_ROOT}/src"/>
    ...
</option>

对于链接资源(在 .project 文件中定义),我知道我可以使用路径变量,但这些变量仅在 Eclipse 内部定义,我找不到基于环境变量的方法,而只能相对于我自己的项目位置,这不是我想做的。

简而言之,我想根据环境变量从位置链接源代码。变量名称是常量,但源的实际位置(通过环境变量得知)不是常量。

具有相对于项目的路径的工作示例。这不是我想要的(.project):

<linkedResources>
    <link>
        <name>System1_src</name>
        <type>2</type>
        <locationURI>PARENT-6-PROJECT_LOC/src</locationURI>
    </link>
</linkedResources>

我想做的事情的非工作示例(.project):

<linkedResources>
    <link>
        <name>System1_src</name>
        <type>2</type>
        <locationURI>${SYSTEM1_LATEST_ROOT}/src</locationURI>
    </link>
</linkedResources>

有什么建议吗?

c++ linux eclipse eclipse-cdt environment
4个回答
7
投票

等了一个月后,我想是时候用我自己的发现来回答了..

首先,路径变量的概念(http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.user/concepts/cpathvars.htm);

"Linked resource target paths can be either defined 
 as absolute paths, or relative to a path variable."

两种选择;绝对路径或相对于路径变量。

具体来说是关于路径变量的:

"Each project contain a pre-defined set of path 
 variables available for defining linked resources, 
 including ECLIPSE_HOME, PARENT_LOC, PROJECT_LOC and 
 WORKSPACE_LOC.

New path variables can be defined relative to 
existing path variables by using the ${VAR} syntax. 
For example, a path variable FOO can be defined 
relative to BAR by defining it to "${BAR}../foo"."

换句话说,路径变量总是以某种方式相对于项目位置,使用项目一词的自由解释。

所以下一个选项是绝对路径。包含环境变量的绝对路径就可以了!

"The linked resource target path can be changed by 
 selecting the Edit... button in the File > Properties > 
 Resource property page of the linked resource. "

尝试此操作后,您会发现仅支持路径变量作为链接资源的路径的一部分。我们已经知道路径变量的定义。

答案是...

Eclipse 不包含这个非常基本的功能。

任何人,请证明我错了!


4
投票

我想我应该在这里添加我的问题解决方案,以便其他人能够从中受益。

虽然“默认”不支持,但事实证明 Eclipse 可以使用路径变量。这里的关键是使用它的“链接资源”功能。转到 Window -> Preferences -> General -> Workspace -> Linked Resources 并在其中添加路径变量。

enter image description here


0
投票

也许我让它发挥作用了。 我向项目添加一个新文件夹,然后单击“高级”。这是画面

我添加文件夹名称(虚拟名称,链接到真实文件夹)并使用此环境变量:

${WORKSPACE_LOC}\my_path_to_the_external_src

Eclipse 可以解决这个问题。 无论如何,还需要采取另一个步骤。

点击新添加的文件夹 -> 属性,你必须取消选中从构建中排除:

在这一点上,这个技巧对我有用。

环境变量必须全部大写!

希望这有帮助。


0
投票

这个帖子很晚了,但这对我有用:

  • 定义一个workspace作用域路径变量,例如
    MYPATH_WS
    并设置此
  • 定义一个project作用域路径变量e.q.
    MYPATH
    并引用工作区变量
  • 导入相对于 project 作用域变量的链接资源。

现在,当其他人获取您的代码时,他们可以设置自己的 workspace 范围变量

MYPATH_WS
瞧!

我还需要它在 GitHub CI 中工作,为此我让构建系统在构建时修补

.project
文件,以将引用的
<value>$%7BMYPATH_WS%7D</value>
替换为 CI 环境中链接资源所在位置的正确路径,例如到
<value>file:/d:/somewhere/else/resources</value>
(它是 Eclipse,所以在我的例子中是 Windows 构建!)。

© www.soinside.com 2019 - 2024. All rights reserved.