制定多个目标

制定多个目标

我有这个 Makefile:

P5.obj P5.sym: P5.asm
        lc3as P5.asm

如果 P5.obj 或 P5.sym 已过期,我希望汇编程序能够运行。但是,删除 P5.sym 不会导致其重新生成。

我究竟做错了什么?

答案1

(我假设lc3as P5.asm会生成文件P5.objP5.sym。假设您尝试运行make。)

默认目标是第一个目标,除非您未指定它(取决于 make-dialect)。

例如:

# Makefile
a b:
    echo a > a
    echo b > b

如果您运行make这两个文件ab将会创建。如果删除b并运行make

`a' is up to date.

因为a目标是默认的。

一般的解决方案是创建一个名称all为开头的目标Makefile

all: a b

a b:
   echo a > a
   echo b > b

.PHONY: all

在这种情况下,如果删除 ,bmake重新生成它(因为默认目标是all,其依赖项是ab)。

答案2

依赖项通常位于规则名称之后,但从您的问题中我不清楚输入是什么以及输出是什么。假设lc3as P5.asm产生P5作为输出(并且依赖于所有P5.asmP5.objP5.sym),则条目可能看起来像:

P5: P5.asm P5.obj P5.sym
        lc3as P5.asm

相关内容