有没有办法将目标写入
1)只创建目标文件?
2)只链接目标文件并创建二进制文件?
我希望能够分两步创建我的二进制文件。
答案 0 :(得分:1)
有一个implicit rule。假设您有以下Makefile:
CC=cc -g
all: client
client: client.c
$(CC) client.c -o client
clean:
-rm -f client
如果您只想要目标文件,那么您只需要运行:
$ make client.o
您将获得目标文件。但是,您也可以编写显式规则,例如:
%.o: %.c
$(CC) -c $<
以前的规则是从任何.c
文件构建到对象(.o
)文件的规则。 $<
有助于获取规则所依赖的文件名。
如果您有多个对象文件,则可能需要定义变量:
objects = client.o foo.o bar.o
client: $(objects)
$(cc) -o $@ $(objects)
$(objects): config.h
clean:
-rm -f client $(objects)
在这种情况下,objects
是与要编译的目标文件关联的变量。在规则client
中使用哪个作为依赖关系并作为链接它们的参数,它还用于定义依赖于头文件的规则(在此示例中为config.h
),并且在clean
规则删除它们以重新开始。
$@
取代了规则的名称。在最后一种情况下,它将是client
。
manual of GNU Make包含许多可以启发您的学习过程的示例。