【问题标题】:Getting Eclipse CDT to use relative include paths in generated Makefiles让 Eclipse CDT 在生成的 Makefile 中使用相对包含路径
【发布时间】:2011-04-29 04:04:43
【问题描述】:

我正在使用 Eclipse CDT。我已经配置了“外部生成器”并且我正在自动生成 Makefiles。不幸的是,生成的 Makefile 包含绝对包含路径。我想在其他系统(未安装 Eclipse)上使用生成的 Makefile - 有没有办法让 Eclipse 使用 Makefile 的相对路径?

我已经在 Settings -> Tool Settings -> GCC C Compiler -> Include Paths using ${workspace_log} 下配置了我的项目包含目录。

【问题讨论】:

  • 下面接受的答案适用于项目中的包含路径,但是链接的资源文件呢?我生成的 makefile 仍然包含绝对路径源文件。您不在项目中使用链接源吗?如何在其他系统上编译?

标签: eclipse makefile eclipse-cdt


【解决方案1】:

如果您在“包含路径”中使用相对路径(而不是 ${workspace_loc}),则 makefile(及其使用的 .mk 文件)也将包含相对路径。

【讨论】:

  • 亲戚从哪里来?
  • 碰巧你如何为链接的源文件实现相同的目标?在我生成的 makefile 中,它们仍然被设置为绝对值吗?
  • 不,抱歉……我已经有 4 年没有使用 Eclipse 了。
  • 。同样的问题。链接资源,将项目移动到另一台机器,由于链接资源(.h文件)的绝对路径而失败。
【解决方案2】:

您在“Project > Properties > C/C++ General > Paths and Symbols > Includes”选项卡中添加的相对路径是相对于您的项目文件夹的。

生成的 makefile 中出现的那些是相对于主 Makefile 位置的。

【讨论】:

    【解决方案3】:

    有一个更好的方法可以做到这一点:“项目 > 属性 > C/C++ 构建 > 设置 > 工具设置 > Cross G++ [或 GCC] 编译器 > 包含”。点击加号按钮,然后写:

    "${ProjDirPath}/../../../somefolder1/somefolder2"

    这种方法允许您通过项目文件夹的相对路径指定任何外部文件夹,即使它位于父子文件夹中。

    【讨论】:

      【解决方案4】:

      我发现这个问题很久以前就问过了。我正在尝试使用 Eclipse CDT 设置 GitLab CI,建议的最简单方法是使用 CDT 生成的现有 makefile。但是,我无法轻松配置 Eclipse CDT 以在我的项目中使用相对路径轻松生成 makefile,我可以看到我可以更改“包含”设置,但是在 makefile 中使用绝对路径引用了其他文件文件也。所以我只是使用 PowerShell 脚本将所有绝对路径更新为相对路径。检查 PWD 的绝对路径,然后计算 ../ 以退回到项目的根目录。我的有 5 个文件夹深。

      ls *.mk -rec | %{ $f=$_; (gc $f.PSPath) | %{ $_ -replace "c:/absolute path", "../../../../.." } | sc $f.PSPath }
      

      【讨论】:

        猜你喜欢
        • 2016-01-27
        • 2011-05-18
        • 1970-01-01
        • 2012-10-01
        • 2015-11-14
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        • 2010-11-08
        相关资源
        最近更新 更多