我知道之前曾被问过,但我无法解决问题。 我得到了这个:没有规则来制作目标' remww.s',需要' remww.o'。停止。 这是我的Makefile:
all: clean $(MAKECMDGOALS)
%:
echo '(load "project.scm") (compile-scheme-file "$(MAKECMDGOALS).scm"
"$(MAKECMDGOALS).s")' | scheme -q
$(MAKECMDGOALS).o: $(MAKECMDGOALS).s
nasm -f elf $(MAKECMDGOALS).s -o $(MAKECMDGOALS).o
$(MAKECMDGOALS): $(MAKECMDGOALS).o
gcc -m32 -Wall -g $(MAKECMDGOALS).o -o $(MAKECMDGOALS)
.PHONY: clean
clean:
rm -f *.o $(MAKECMDGOALS)
我试过" make remww",还有remww.scm存在于我的目录中。我正在运行的方案程序运行正常,当我独立运行它并手动输入参数时创建remww.s文件。
答案 0 :(得分:3)
我必须承认我不是Makefile语法方面的专家,但我不知道以下行应该做什么:
%:
如果您想告诉make
可以从文件$(MAKECMDGOALS).s
创建文件$(MAKECMDGOALS).scm
,则该行应替换为以下行:
$(MAKECMDGOALS).s: $(MAKECMDGOALS).scm
...你的Makefile应该可以正常工作。
我自己也会尝试在大多数规则中摆脱$(MAKECMDGOALS)
。这应该可以通过以下方式实现,但是我不是100%确定,因为这个Makefile包含一些特色......:
%.s: %.scm
echo '(load "project.scm") (compile-scheme-file "$<" "$*")' | scheme -q
%.o: %.s
nasm -f elf $< -o $*
%: %.o
gcc -m32 -Wall -g $< -o $*