Makefile中所有目标的行为

时间:2015-09-03 11:50:39

标签: build makefile

我有以下makefile:

DESTFILES = build/test1 build/toto2

build/test1: test1
    cp $< $@

build/toto2: toto2
    cp $< $@

all:    build/test1 build/toto2

Makefile所在的目录包含build子目录和test1toto2个空文件。

目的是将文件复制到build子目录(la make install)。

当我执行make all命令时,文件将在build中正确复制。 但是当我只make all时,只会触发test1的第一个目标,# type(8) code(8) checksum(16) process id(16) sequence(16) packet = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, packet_checksum, pid, sequence) 被触发,因此只复制第一个文件。

我对这种行为感到非常惊讶。任何人都可以告诉我这个吗?

这是Archlinux上的GNU Make 4.1。

1 个答案:

答案 0 :(得分:2)

对于GNU make,默认目标(当您只键入make时完成的目标)是第一个名称不以&#39;开头的目标。&#39;。 all只是一个名字,GNU make并没有做任何特别的事情。如果您希望它是默认值,请将其置于第一位置或使用特殊的.DEFAULT_GOAL变量:

.DEFAULT_GOAL := all