得到"没有规则来制作目标。

时间:2018-01-12 10:37:14

标签: assembly makefile

我知道之前曾被问过,但我无法解决问题。 我得到了这个:没有规则来制作目标' 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文件。

1 个答案:

答案 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 $*