在makefile中构建多个目标的情况下,当我说'make'时默认情况下会生成所有目标。是否可以将所有的默认值更改为其他内容?
all : target1 target2
现在,当我发出'make'命令时,我只想构建target1。
答案 0 :(得分:4)
与Carl提到的一样,你可以从行中删除target2。
但是如果你仍然希望所有人都制作target1和target2,那么有一些选择......
你没有说你正在使用哪种,这些细节取决于版本,但我将详细介绍它如何适用于GNU make。
在GNU make中,第一个目标成为默认目标。所以如果你有一个像Makefile这样的Makefile:
next:
@echo "next"
all:
@echo "All"
它将打印:
$ make
next
您还可以更改默认目标:
.DEFAULT_GOAL=other
next:
@echo "next"
all:
@echo "All"
other:
@echo "other"
它会显示:
$ make
other
这是:
$ make --version
GNU Make 3.81
答案 1 :(得分:0)
当然,只需从该行删除target2
。
答案 2 :(得分:0)
只需添加以下行:
target1:
在定义all
的规则之前。名称all
并不特殊:它因为是列出的第一个规则而成为默认值。通过在该行之前添加target1:
,target1
成为默认值。请注意,允许多个规则定义不是标准行为(这基本上是一个伪规则,其行为稍后在Makefile中定义),但这适用于gnu make。如果它不起作用,只需在target1
的定义之前移动all
的实际定义。