让Eclipse CDT在生成的Makefile中使用相对包含路径

14

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

我已在“设置”->“工具设置”->“GCC C编译器”->“包含路径”下使用${workspace_log}配置了我的项目包含目录。


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

8

有更好的方法来完成这个操作:"项目 > 属性 > C/C++ 构建 > 设置 > 工具设置 > 交叉 G++ [或 GCC] 编译器 > 包含"。点击加号按钮,然后写入:

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

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


4

在"项目 > 属性 > C/C++常规 > 路径和符号 > 包含目录"选项卡中添加的相对路径是相对于您的项目文件夹的。

在生成的Makefile中出现的路径是相对于主Makefile位置的。


4
如果在“包含路径”中使用相对路径(而不是${workspace_loc}),那么Makefile文件(以及它使用的.mk文件)也将使用相对路径。

7
相对于哪里呢? - CashCow
3
你知道如何将链接的源文件设置为相对路径吗?我的生成的makefile仍然将它们设置为绝对路径。 - dtmland
不好意思,我已经有大约四年没有使用Eclipse了。 - Itamar Katz
这里也有同样的问题。当链接资源(.h文件)使用绝对路径时,将项目移动到另一台机器上会导致失败。 - huseyin tugrul buyukisik

1
我发现这个问题很久以前就被提出了。我正在尝试使用Eclipse CDT设置GitLab CI,建议最简单的方法是使用CDT生成的现有makefile。但是,我无法轻松地配置Eclipse CDT以在我的项目中轻松生成相对路径的makefile,我可以看到我可以更改“include”设置,但是制作文件中还使用绝对路径引用其他文件。所以我只是使用PowerShell脚本将所有绝对路径更新为相对路径。检查PWD获取绝对路径,然后计算../以回退到项目的根目录。我的深度为5个文件夹。
ls *.mk -rec | %{ $f=$_; (gc $f.PSPath) | %{ $_ -replace "c:/absolute path", "../../../../.." } | sc $f.PSPath }

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