Orw*_*ell 8 gcc mingw makefile space target
有没有办法在使用make.exe时在目标名称中获取空间?如果这个真正古老的错误报告是正确的,似乎是不可能的:http: //savannah.gnu.org/bugs/?712
作为参考,最大的问题是makefile命令如下:
"foo bar baz": $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
Run Code Online (Sandbox Code Playgroud)
...似乎被视为三个独立的命令:一个用于构建"foo(注意包含"),一个用于构建条形图,最后一个用于构建baz"(再次,包括").这是因为make.exe似乎使用空格作为分隔符.
但是,假设人们可能想要构建"Hello World.exe"是合理的.这似乎不可能.双引号不起作用,也没有逃避单独的单词(我在某处读过,不记得链接):
"foo\\ bar\\ baz": $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来解决这个问题?官方手册仅确认按空格标记的内容,但不提供将空间用于任何其他目的的方法:http: //www.gnu.org/software/make/manual/make.html#Rule-句法
编辑:按照建议,我也尝试过单斜线,但这些效果与双斜线完全相同.抱怨它无法找到第一个单词的规则:
mingw32-make.exe: *** No rule to make target `foo', needed by `all'. Stop.
Run Code Online (Sandbox Code Playgroud)
虽然可以正确生成可执行文件"foo bar baz.exe",但每次每个单词都会进行链接.
使用单反斜杠代替双反斜杠。以下 Makefile 有效(至少对于 gnu make 而言):
goal: foo\ bar
foo\ bar:
gcc -o "foo bar" "foo bar.c"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4899 次 |
| 最近记录: |