使用 make.exe 时,有没有办法让目标名称中的空格起作用?如果这个非常古老的错误报告是正确的,这似乎是不可能的: http ://savannah.gnu.org/bugs/?712
作为参考,最大的问题是 makefile 命令的片段,例如:
"foo bar baz": $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
...似乎被视为三个单独的命令:一个构建“foo(注意包含的”),一个构建 bar,最后一个构建 baz”(同样,包括“)。这是因为 make.exe 似乎使用空格作为分隔符。
然而,假设一个人可能想要构建“Hello World.exe”是合理的。这似乎是不可能的。双引号不起作用,转义单独的单词也不起作用(我在某处读过,不记得链接了):
"foo\\ bar\\ baz": $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
有没有其他方法可以解决这个问题?官方手册仅确认 tokenize-by-spaces 的东西,但没有提供将空间用于任何其他目的的方法: http ://www.gnu.org/software/make/manual/make.html#Rule-句法
编辑:正如建议的那样,我也尝试过单斜杠,但它们与双斜杠具有完全相同的效果。抱怨它找不到第一个单词的规则:
mingw32-make.exe: *** No rule to make target `foo', needed by `all'. Stop.
虽然可以正确生成可执行文件“foo bar baz.exe”,但每次每个单词都会进行链接。