为什么我需要制作一个make target
在能够构建我的源代码之前?
更具体地说,什么是制定目标 http://publib.boulder.ibm.com/infocenter/rsdvhelp/v6r0m1/index.jsp?topic=/org.eclipse.cdt.doc.user/tasks/cdt_t_addmaketarget.htm确切地?
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 $@
...
这意味着,当您输入make all
(简写只是输入make
),它将确保 mybinary 目标或文件是最新的。为此,需要确保 mybinary 比所有 files.o it.o dependent.o 和 on.o 更新。如果没有,则它使用下一行指定的 shell 命令来构建 mybinary。但在此之前,它首先确保 files.o 等文件是最新的。这意味着它们必须比 files.c 和 files.h 更新。如果没有,那么它使用下一行指定的 shell 命令来构建 files.o。一旦所有 *.o 文件都是最新的,它就可以构建 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
还可以使用通配符指定目标,例如%.c
意味着你在 shell 中调用的内容*.c
.
有些目标是“虚假”目标,这意味着它们不对应于任何真实文件。 “全部”目标就是这样的。 “干净”的目标也是如此(make clean
)。等等。您实际上并不需要或想要构建一个名为“all”或“clean”的文件。有多种方法可以指定目标是虚假的。
如果您简单地键入,第一个出现在 Makefile 中的目标就是将被调用的目标make
。一种约定是将这个目标命名为“all”。那么那么make
将与以下相同make all
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)