dub*_*jim 24
Makefile看起来像这样:
all: mybinary
mybinary: files.o it.o depends.o on.o
[tab]$(CC) $(CFLAGS) files.o it.o depends.o on.o -o mybinary
files.o: files.c files.h
[tab]$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
...
Run Code Online (Sandbox Code Playgroud)
这意味着,当您键入make all(简写只是键入make)时,它将确保mybinary目标或文件是最新的.要做到这一点,它需要确保mybinary比所有files.o it.o depends.o和on.o更新.如果没有,那么它使用下一行指定的shell命令来构建mybinary.但在此之前,它首先确保files.o等是最新的.这意味着它们必须比files.c和files.h更新.如果没有,那么它使用下一行指定的shell命令来构建files.o.一旦所有*.o文件都是最新的,它就可以构建mybinary.一旦构建了mybinary,就会满足所有目标.
目标通常只是文件.块的格式是:
target: list of dependency files
[tab]shell commands to build target if it's older than any of its dependencies
[tab]more shell commands
[tab]still more
Run Code Online (Sandbox Code Playgroud)
也可以使用通配符指定目标,例如,%.c表示要调用的shell中的内容*.c.
有些目标是"虚假"目标,这意味着它们与任何真实文件都不对应."所有"目标就是这种."干净"的目标(make clean)也是如此.等等.您并不真正需要或想要构建名为"all"或"clean"的文件.有多种方法可以指定目标是虚假的.
出现在Makefile中的第一个目标是只需键入即可调用的目标make.一种惯例是将此目标命名为"全部".那么make将是一样的make all.
'make target'基本上是您想要重建的文件.
Make无法理解您想要构建的内容,因此您必须隐式或明确地告诉它应该构建什么.通常,文件中的第一个目标是诸如"all"之类的名称,如果运行'make'而没有任何显式目标,它将构建makefile中列出的第一个目标.但是,一些makefile没有指定任何目标; 那么你必须在命令行中指定一个.或者,如果您不希望构建默认目标,则必须指定要构建的目标.
就GNU make而言,目标也可以是"假的".也就是说,它是一个不存在的名称,并且规则不会创建它,但它(虚假目标)依赖于许多其他具有与之关联的规则的文件.实际上,'all'目标通常是假目标 - 在大多数目录中没有名为'all'的文件.
| 归档时间: |
|
| 查看次数: |
27928 次 |
| 最近记录: |