我有这个 Makefile:
P5.obj P5.sym: P5.asm
lc3as P5.asm
如果 P5.obj 或 P5.sym 已过期,我希望汇编程序能够运行。但是,删除 P5.sym 不会导致其重新生成。
我究竟做错了什么?
答案1
(我假设lc3as P5.asm
会生成文件P5.obj
和P5.sym
。假设您尝试运行make
。)
默认目标是第一个目标,除非您未指定它(取决于 make-dialect)。
例如:
# Makefile
a b:
echo a > a
echo b > b
如果您运行make
这两个文件a
,b
将会创建。如果删除b
并运行make
:
`a' is up to date.
因为a
目标是默认的。
一般的解决方案是创建一个名称all
为开头的目标Makefile
:
all: a b
a b:
echo a > a
echo b > b
.PHONY: all
在这种情况下,如果删除 ,b
将make
重新生成它(因为默认目标是all
,其依赖项是a
和b
)。
答案2
依赖项通常位于规则名称之后,但从您的问题中我不清楚输入是什么以及输出是什么。假设lc3as P5.asm
产生P5
作为输出(并且依赖于所有P5.asm
、P5.obj
和P5.sym
),则条目可能看起来像:
P5: P5.asm P5.obj P5.sym
lc3as P5.asm