Build Makefile中所有目标的行为
我有以下生成文件:Build Makefile中所有目标的行为,build,makefile,Build,Makefile,我有以下生成文件: DESTFILES = build/test1 build/toto2 build/test1: test1 cp $< $@ build/toto2: toto2 cp $< $@ all: build/test1 build/toto2 DESTFILES=build/test1 build/totot2 build/test1:test1 cp$
DESTFILES = build/test1 build/toto2
build/test1: test1
cp $< $@
build/toto2: toto2
cp $< $@
all: build/test1 build/toto2
DESTFILES=build/test1 build/totot2
build/test1:test1
cp$<$@
构建/toto2:toto2
cp$<$@
全部:构建/测试1构建/测试2
Makefile所在的目录包含build
子目录和test1
,tototo2
空文件
目的是将文件复制到build子目录(lamakeinstall
)
执行makeall
命令时,文件会在build
中正确复制。
但是当我只做make
时,只会触发all
的第一个目标,test1
,因此只复制第一个文件
我对这种行为感到非常惊讶。有人能告诉我这件事吗
这是Archlinux上的GNU Make 4.1。对于GNU Make,默认目标(仅键入
Make
时完成的目标)是第一个名称不以“.”开头的目标all
只是一个名称,GNU make对它没有任何特殊作用。如果要将其设置为默认值,请将其置于第一个位置或使用特殊的。默认值\u目标
变量:
.DEFAULT_GOAL := all
也许值得一提的是
.DEFAULT\u目标
。这可以让你定义默认的目标,而不管它在什么位置。很好。我更新了我的答案,还提到在定义默认目标时不考虑以“.”开头的目标名称。谢谢