【问题标题】:Eclipse CDT: How to reference 3rd party includes via a Relative pathEclipse CDT:如何通过相对路径引用 3rd 方包括
【发布时间】:2010-11-08 12:53:27
【问题描述】:

我是 Eclipse-CDT 的新手,第一次建立一个新项目。我正在尝试引用 Boost 而不硬编码绝对路径。

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

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

有什么建议吗?将 Boost 复制到我的项目文件夹中似乎没有意义,因为它会出现在 Eclipse 中并且 Eclipse 想要构建它(当然,我可以排除它)。

  • 亚历克斯

【问题讨论】:

    标签: c++ eclipse boost eclipse-cdt


    【解决方案1】:

    在CDT项目中添加包含文件路径(Project Properties/C/C++ General/Paths and Symbols)时,有3个按钮可以浏览一个位置:

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

    如果您按下 Workspace... 按钮,路径将相对于工作空间/项目。如果您选择变量... 按钮,您将可以合并变量,例如 ${WorkspaceDirPath}。这些变量还可以引用环境变量,如果您希望从可能驻留在计算机上任何位置的项目中引用单个安装的 boost,这可能会很方便。

    如果您将变量合并到路径中,请确保选中“是工作区路径”选项 - 否则当您按“确定”时变量似乎会被评估,而不是在构建时保留要评估的变量。

    【讨论】:

    • 感谢您指出该选项,我不想将我的设置放在那里,这些是 IDE 范围的,我想要项目特定的设置,以便其他用户可以获取项目(和依赖项)从源代码管理,然后构建。
    • 在 Visual Studio 2008 中,我只需添加项目的相对路径,包括目录,例如“../boost_1_39_0”
    • 如果您只需输入相对路径,Eclipse 似乎会“解析”完整路径 - 尽管选中“工作区相对”复选框可能会解决此问题。另外-您对IDE范围内的设置是什么意思?对我来说,他们似乎依附于特定项目。但请注意,我在 Eclipse 中特别精通。我发现 Eclipse/CDT 缺少很多东西(尤其是在文档中),但在很多时候使用它而不是 5000 美元的 IDE 进行嵌入式开发是一个不错的选择,这已经足够好了。
    • 我发现有两个地方可以输入这些设置,你描述的那个似乎不是特定于项目的。 “C/C++ General”旁边有“启用项目特定设置”的文本,我还没有选中。
    • “项目特定设置”选项似乎是面板到面板的选项。例如,“C/C++ 常规”面板上的一项仅适用于文档工具设置。据我所知,“路径和符号”设置是特定于项目的。
    【解决方案2】:

    我按照 Michael Burr 上面的建议大致完成了这项工作:

    在 Project Properties/C/C++ General/Paths and Symbols 下,我添加了如下路径:

    ${ProjDirPath}/../boost_1_39_0

    • 亚历克斯

    【讨论】:

      【解决方案3】:

      我正在使用 Eclipse Luna,发现已接受的答案不再准确。经过一番摸索,过去几年似乎发生了一些变化(至少,这是我的系统上发生的情况):

      • 如果您没有勾选了“是工作区路径”,则单击“确定”时,Eclipse 不再展开变量。
      • Eclipse 找不到任何与工作空间相关的路径,除非它们实际上引用了工作空间中的项目。 Eclipse 无法找到的任何路径不会使用-I 或其他相关开关添加到构建命令行中

      因此,为此,我必须输入${ProjDirPath}/../whatever 作为非工作区相对路径,并且变量直到编译时才展开。

      【讨论】:

        【解决方案4】:

        IIRC,您应该能够右键单击项目并进入 C/C++ 常规设置。从那里您可以添加特定的包含目录以供项目参考。这里有几个链接可能会有所帮助...

        IBM Article

        Eclipse Development

        【讨论】:

        • 谢谢,是的,我可以做到这一点,但我想我的问题是如何使用相对路径来做到这一点。
        • 我更新了问题以更好地反映相对路径问题
        猜你喜欢
        • 2011-04-29
        • 2010-11-08
        • 1970-01-01
        • 1970-01-01
        • 2012-10-17
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多