我有以下makefile:
DESTFILES = build/test1 build/toto2
build/test1: test1
cp $< $@
build/toto2: toto2
cp $< $@
all: build/test1 build/toto2
Makefile所在的目录包含build
子目录和test1
,toto2
个空文件。
目的是将文件复制到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。
答案 0 :(得分:2)
对于GNU make,默认目标(当您只键入make
时完成的目标)是第一个名称不以&#39;开头的目标。&#39;。 all
只是一个名字,GNU make并没有做任何特别的事情。如果您希望它是默认值,请将其置于第一位置或使用特殊的.DEFAULT_GOAL
变量:
.DEFAULT_GOAL := all