У меня есть исходный файл c, в который я хочу передать макрос в кавычках через gcc -D
флаг командной строки. (См. Также Как передать строку в кавычках с -D в gcc в 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
, make gnu попытается вызвать /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