gpt4 book ai didi

windows - Windows 生成文件中的反斜杠

转载 作者:行者123 更新时间:2023-12-04 17:55:53 27 4
gpt4 key购买 nike

重要编辑:我已经用我的特定 makefile 解决了这个问题,但我不知道如何解决。

我用正斜杠替换了反斜杠,结果我的规则可以很好地处理这些规则。 Gcc 接受混合的正斜杠和反斜杠,所以它工作得很好。 mkdir存在一个症结:它不接受混合正斜杠和反斜杠的路径。我将变量更改为仅在 Windows 版本中包含反斜杠,现在该文件可以完美运行。

作为引用,这里有一些新的规则和变量:
OUT = $(ROOT)\out
SRC = $(ROOT)\src
$(OUT):
mkdir $(OUT)
$(OUT)/%.o: $(SRC)/%.c
$(CC) $(CFLAGS) -o $@ -c $<

为什么 minGW-make 在变量扩展后接受规则中的混合斜杠而不是仅反斜杠?这里到底发生了什么?

原帖

我有一个用于 Windows 的 minGW 安装。我复制了我的 unix makefile 并将命令转换为 windows(并将正斜杠转换为反斜杠),但生成的 makefile 不起作用。

主要区别在于 Windows 有 $(OUT) = $(ROOT)\out\win和 Unix 有 $(OUT) = $(ROOT)/out . Unix 工作正常。 make -f makefile.win在 Windows 上提示 <root>\out\win\LinkedList.o 没有规则.有问题的规则和错误是:
make: *** No rule to make target `H:\CodeRIT\1014Syllables\out\win\LinkedList.o', needed by `H:\CodeRIT\1014Syllables\out\win\bin\syllables.exe'. Stop.$(OUT)\%.o: $(ROOT)\src\%.c
gcc $(CFLAGS) -o $@ -c $<
$(OUT)\bin\syllables.exe: $(OUT)\LinkedList.o $(OUT)\Syllable.o $(OUT)\Model.o
gcc $(CFLAGS) -o $@ $^

$(OUT) 应该扩展到 <root>\out\win给文件它提示一个明确的目标。我不明白为什么这个规则不起作用,因为同样的规则在 Unix 上工作得很好。是否有一些关于目标中最大目录的神秘规则?我没有足够的 make 经验来真正评估这里出了什么问题。

这是相关文件的全文:https://github.com/blastedt/syllables/blob/master/makefile.win

最佳答案

$(OUT)\%.o:没有定义模式规则,你已经 escaped % .
$(OUT)\\%.o:在这种情况下应该可以工作,尽管由于这样的问题,最好在 Windows 上使用 make 时避免反斜杠。

你会遇到类似 mkdir 这样的 shell 命令的问题。和 del如果不使用正斜杠,您应该考虑切换到 powershell、cygwin、MSYS2 或 bash on windows .

关于windows - Windows 生成文件中的反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40455549/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com