Eclipse CDT: 如何通过相对路径引用第三方库?

14

我是第一次使用Eclipse-CDT,正在首次设置新项目。我想在没有硬编码绝对路径的情况下引用Boost。

我已经将boost放在我的工作区文件夹中,例如/home/user/workspace/boost_1_39_0

然后,我希望添加一个包含目录,指向相对于工作区的那个文件夹,但Eclipse不会这样做,似乎只想指向/home/user/workspace/[MyProjectNameHere]中的东西。

有什么技巧吗?将Boost复制到我的项目文件夹中似乎没有意义,因为它会出现在Eclipse中,Eclipse希望构建它(当然,我可以将其排除在外)。

  • Alex
4个回答

13

在CDT项目中添加包含文件路径(项目属性/C / C ++通用/路径和符号)时,有三个浏览位置的按钮:

  • 变量...
  • 工作区...
  • 文件系统...

如果您点击工作区...按钮,则路径将相对于工作区/项目。如果选择变量...按钮,您可以使用变量,例如${WorkspaceDirPath}。这些变量也可以引用环境变量,如果您希望一个单独的boost安装被从可能位于机器任何地方的项目中引用,这可能会很方便。

如果将变量合并到路径中,请确保选中“是工作区路径”选项-否则,变量似乎会在您按“确定”键时被计算,而不是留下一个变量以在构建时进行评估。


谢谢你指出那个选项,我不想把我的设置放在那里,因为那些是 IDE 的全局设置,我想要项目特定的设置,这样其他用户就可以从源代码控制获取项目(和依赖项),然后进行构建。 - waterlooalex
在Visual Studio 2008中,我只需将相对路径添加到项目包含目录中,例如"../boost_1_39_0"。 - waterlooalex
“项目特定设置”选项似乎是面板对面板的选项。例如,“C/C++常规”面板上的选项仅适用于文档工具设置。据我所知,“路径和符号”设置是特定于项目的。 - Michael Burr
更新:仔细阅读我的评论后,我注意到其中一个说:“我特别熟悉Eclipse” - 我的意思恰恰相反 - 我对Eclipse并不是特别熟悉! - Michael Burr
我有一个类似的问题,点击“工作区...”并选择我的so文件所在的文件夹不起作用 - 链接器会响应“没有这样的文件或目录”。如果我将它复制到/usr/lib,它就可以立即工作。 - wsd
显示剩余2条评论

5
我通过大致按照Michael Burr上面建议的方法使其工作:

在项目属性 / C / C ++常规/路径和符号下,我添加了这样的路径:

${ProjDirPath}/../boost_1_39_0

  • Alex

3
我正在使用Eclipse Luna,发现已经接受的答案不再准确。 经过一番思考,似乎在过去几年中发生了一些变化(至少在我的系统上是这样),具体如下:
- 如果您没有勾选“是工作区路径”,则单击“确定”时,Eclipse 不再展开变量。 - Eclipse 无法找到相对于 workspace 的任何路径,除非它们实际上是 workspace 中的项目。 Eclipse 找不到的任何路径都不会使用“-I”或其他相关开关将其添加到构建命令行中。
为了使此项工作,我必须将 `${ProjDirPath}/../whatever` 输入为非工作区相关路径,并且该变量直到编译时才会被展开。

2
我记得你应该能够右键单击项目并进入C/C++常规设置。从那里,你可以添加特定的包含目录以供项目引用。以下是几个可能有帮助的链接... IBM文章 Eclipse开发

1
谢谢,是的我可以做到,但我的问题是如何使用相对路径来实现。 - waterlooalex
我更新了问题,以更好地反映相对路径问题。 - waterlooalex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接