生成文件:CreateProcess(...) 失败。该系统找不到指定的文件

Makefile: CreateProcess(...) failed. The system cannot find the file specified

我正在尝试处理 Makefile 并编写了一个简单的 "program":

DELETE_COMMAND := del
COMPILER := gcc
SOME_TEXT := lalalalalalalalalalalal!!!

all: sum.o even.o main.o pi.o
    @$(COMPILER) -o output.exe sum.o even.o main.o pi.o
    SOME_TEXT_2 := $(subst la,La,$(SOME_TEXT))
    @echo $(SOME_TEXT_2)

clean:
    @$(DELETE_COMMAND) *.o
    @$(DELETE_COMMAND) output.exe

sum.o: sum.c sum.h
    @$(COMPILER) -c sum.c

main.o: main.c sum.h pi.h
    @$(COMPILER) -c main.c

pi.o: pi.c pi.h even.h
    @$(COMPILER) -c pi.c

even.o: even.c even.h
    @$(COMPILER) -c even.c

但我收到以下错误:

SOME_TEXT_2 := LaLaLaLaLaLaLaLaLaLaLal!!!
process_begin: CreateProcess(NULL, SOME_TEXT_2 := LaLaLaLaLaLaLaLaLaLaLal!!!, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [Makefile:7: all] Error 2

问题是由这一行引起的:

    SOME_TEXT_2 := $(subst la,La,$(SOME_TEXT))

但我不知道问题出在哪里。 我在 Windows.

上使用 mingw-w64 的 make

考虑规则...

all: sum.o even.o main.o pi.o
        @$(COMPILER) -o output.exe sum.o even.o main.o pi.o
        SOME_TEXT_2 := $(subst la,La,$(SOME_TEXT))
        @echo $(SOME_TEXT_2)

假设除第一行以外的所有行都以制表符开头,那么每个命令将 运行 在单独的 shell 中。但是...

SOME_TEXT_2 := $(subst la,La,$(SOME_TEXT))

是无效的 shell 语法——它看起来应该由 make 解释。

如果只是为了修改变量 SOME_TEXT 并打印结果,那么您可以...

all: sum.o even.o main.o pi.o
        @$(COMPILER) -o output.exe sum.o even.o main.o pi.o
        @echo $(subst la,La,$(SOME_TEXT))

或者,让 make 分配给 SOME_TEXT_2...

SOME_TEXT_2 := $(subst la,La,$(SOME_TEXT))

all: sum.o even.o main.o pi.o
        @$(COMPILER) -o output.exe sum.o even.o main.o pi.o
        @echo $(SOME_TEXT_2)