首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows makefile中的反斜杠

Windows makefile中的反斜杠
EN

Stack Overflow用户
提问于 2016-11-06 23:02:12
回答 1查看 5.3K关注 0票数 5

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

我用正斜杠代替了反斜杠,结果证明我的规则对这些都很有效。Gcc接受正反斜线的混合,所以效果很好。mkdir存在的一个症结是:它不接受带有正斜杠和反斜线的混合路径。我更改了变量,使其只包含Windows版本中的反斜杠,现在该文件工作得很好。

作为参考,以下是一些新的规则和变量:

OUT = $(ROOT)\out SRC = $(ROOT)\src $(OUT): mkdir $(OUT) $(OUT)/%.o: $(SRC)/%.c $(CC) $(CFLAGS) -o $@ -c $<

为什么minGW-使接受混合斜杠在规则后,变量展开,而不是反斜杠-只?到底是怎么回事?

原始员额

我有一个minGW安装的。我复制了unix并将命令转换为windows (并将正斜杠转换为反斜杠),但是生成的makefile无法工作。

主要的区别是Windows有$(OUT) = $(ROOT)\out\win,Unix有$(OUT) = $(ROOT)/out。Unix很好用。windows上的make -f makefile.win抱怨<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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-07 01:41:48

$(OUT)\%.o:不定义模式规则,而是转义 %

在这种情况下,$(OUT)\\%.o:应该可以工作,尽管正是因为这样的问题,在Windows上使用make时最好避免反斜杠。

您将遇到mkdirdel等shell命令不使用正斜杠的问题,您应该考虑切换到powershell、cygwin、MSYS2或在窗户上撞击

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40455549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档