【问题标题】:Referencing 3rd party Libraries using *relative* paths in Eclipse-CDT在 Eclipse-CDT 中使用 *relative* 路径引用第 3 方库
【发布时间】:2010-11-08 13:12:45
【问题描述】:

在 Eclipse-CDT 中使用 relative 路径引用第 3 方 C++ 组件(例如包含、库)的最佳做法是什么?

  • 我正在尝试引用 Boost 和 Google protobuf。
  • 我已将它们分别放在工作区的一个文件夹中,例如/home/user/workspace/boost_1_39_9
  • 我在项目属性的构建设置下添加了对该文件夹的引用,但是 Eclipse 不允许我将该路径指定为相对于工作区文件夹,我必须使用文件系统选择它并指定一个绝对路径

谢谢,

  • 亚历克斯

【问题讨论】:

  • 我在使用 MySQL Connector for C++ 时遇到了完全相同的问题 - 我已对其进行编译并将其放入一个额外的项目中,并将其添加到库搜索路径中,但 eclipse 坚持认为它可以没找到!我将它复制到 /usr/lib 并且它工作得很好。

标签: c++ eclipse-cdt


【解决方案1】:

我不确定 CDT 构建设置的路径(不在我的计算机上),但您不能使用工作区变量吗?类似于:${workspace_loc}/boost_1_39_9

编辑:好的,我进行了一些搜索并找到了有关这些变量的一些信息,here。我想你想要的是: ${project_loc:/boost_1_39_0} ?

【讨论】:

  • 我试过了,但这似乎不起作用。 1. Eclipse 不会让您创建类似的东西,它会强制您选择 ${workspace_loc}/[YourProjectName]/boost_1_39_0 2. 如果我手动输入您建议的内容,它似乎可以工作,但 Eclipse 找不到我的包含。
  • 我不打算将 boost 放在项目位置,因为那时 Eclipse 会想要构建它。
【解决方案2】:

Eclipse 变量,例如 ${workspace_loc} 和 ${project_loc} 仅适用于实际上是 in 运行时 Eclipse 工作区的事物。当您说将它们放在文件系统中的工作区下时,您实际上是否将文件导入 Eclipse(使用新项目;或在现有项目中创建链接文件夹)?

如果文件存在于文件系统中但不存在于 Eclipse 本身中,则 Eclipse 将只能使用绝对路径访问它们。

顺便说一句,CDT 有自己的变量:${WorkspaceDirPath} ${ProjDirPath} ${ProjName} 扩展至特定的文件系统位置。

【讨论】:

    【解决方案3】:

    我使用 Preferences->General->Workspace->Linked Resources 选项解决了这个问题。

    基本上你定义一个指向你的工作空间文件夹的变量。

    然后使用 Add folder->Advanced->Link to folder in the filesystem 将第三方文件夹添加到您的项目中,并使用 Variables... 按钮使用之前创建的变量指向第三方文件夹(使用扩展按钮)。

    然后你只需要将文件夹添加到项目设置中的包含和库路径即可。

    像蛋糕一样简单... :S

    【讨论】:

      【解决方案4】:

      只是一个想法..您是否尝试过安装 boost 以使包含位于 /usr/include 和 /usr/lib/ 或 /lib 下。然后只需在您的构建首选项中添加这些路径。我有类似的问题,但后来我们通过使用自定义 makefile 解决了它。它对我们有用,因为我们已经有了自定义构建框架,只需要对现有的 makefile 进行一些更改并将其复制到这个项目。

      【讨论】:

        猜你喜欢
        • 2010-11-08
        • 1970-01-01
        • 2014-06-28
        • 1970-01-01
        • 2010-09-23
        • 2013-04-09
        • 1970-01-01
        • 2011-04-29
        • 2010-12-30
        相关资源
        最近更新 更多