在Windows上使用SED在makefile中扩展路径变量

时间:2019-03-22 12:30:13

标签: regex sed cmd makefile

在Windows计算机上,makefile正在采用路径选项,并通过附加此路径值来创建另一个文件。

我的问题是路径变量无法在结果文件中正确扩展。

例如

$ make var=c:\test\kernel

通过使用下面的makefile代码,将此$(var)值附加到输出文件中

all:
      @sed -i '1 i\export PATH := $(var)' output.txt

预期结果

export PATH := c:\test\kernel

但是我得到了

export PATH := c:   estkernel

那么,如何解决Makefile中的这个问题?

1 个答案:

答案 0 :(得分:2)

首先,我强烈建议您即使在Windows上也要在路径中始终使用正斜杠,尤其是在使用make时。 Windows上很少有程序不能使用正斜杠(主要是老式的CMD命令等),并且在拥有UNIX起源的工具中使用反斜杠总是不合适的。

针对您的情况,您可以执行以下操作:

all:
        @sed -i '1 i\export PATH := $(subst \,\\,$(var))' output.txt

将反斜杠转换为转义的反斜杠。