我正在尝试处理Makefile,并编写了一个简单的“程序”:
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:= LaLaLaLaLaLaLaLaLaLaLaLal !!!
process_begin:CreateProcess(NULL,SOME_TEXT_2:= LaLaLaLaLaLaLaLaLaLaLaLal !!!,...)失败。
make(e = 2):系统找不到指定的文件。
make:*** [Makefile:7:全部]错误2
问题是由以下行引起的:
SOME_TEXT_2 := $(subst la,La,$(SOME_TEXT))
但是我不知道问题是什么。 我在Windows上使用的是mingw-w64。
答案 0 :(得分:1)
考虑规则...
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)