我有一个c源文件,我想通过gcc的-D
传递一个引用的宏
命令行标志。 (另见How do I pass a quoted string with -D to gcc in cmd.exe?)。我正在使用cmd.exe。
可以直接编译程序:
c:\MinGW\bin\gcc.exe -DDEFINED_STRING="\"foo bar baz\"" foo.c -o foo.exe
但是,如果我使用以下内容创建 makefile
foo.exe: foo.c
c:\MinGW\bin\gcc.exe -DDEFINED_STRING="\"foo bar baz\"" foo.c -o foo.exe
然后执行make
,gnu的make将尝试调用/bin/sh
和gcc.exe消息路径的反斜杠:
gcc-4.7.0/gcc/config/avr -c c:/temp/gcc-4.7.0/gcc/gcc.c -o o/gcc/gcc.o
/bin/sh: c:MinGWbing++.exe: command not found
make: *** [o/gcc/gcc.o] Error 127
当我使用-DDEFINED_STRING=foo
(即:没有引号)时,这种情况不会发生。
make -v
打印GNU Make 3.81
答案 0 :(得分:0)
在Windows环境中制作有许多细微差别。在这种情况下,看起来你只需要像这样逃避你的反斜杠:
foo.exe: foo.c
c:\\MinGW\\bin\\gcc.exe -DDEFINED_STRING="\"foo bar baz\"" foo.c -o foo.exe
或者,将它们切换为正斜杠或首选/ cygdrive / c样式。作为旁注,我似乎记得Make Make 3.81中依赖项不再支持Windows样式文件名。
您可能还想设置SHELL变量并查看手册和源tarball中包含的NEWS文件中的一些警告mentioned。