使用makefile目标来设置构建选项

leo*_*ger 6 makefile

这要么是微不足道的,要么与make应该如何使用的哲学背道而驰,但是我希望有一个命令行,它读作"make debug"而不是"make DEBUG = 1".我尝试创建一个名为debug的虚假目标,除了设置DEBUG变量之外什么也没做,但是"make debug build"和"make build debug"之间存在差异 - 即在一种情况下,变量在构建之后设置了发生了.

有没有办法给某些目标优先权?

谢谢你的帮助.

bma*_*ies 5

请参阅此页面中的 "特定于目标的变量值" .

  • 没有害处提到你只需要为目标做一个`target:DEBUG = 1`而不是指向他的文档......对吗? (10认同)

小智 3

您还可以通过查看 MAKECMDGOALS 变量来完成此操作

ifneq "$(findstring debug, $(MAKECMDGOALS))" ""
DEBUG = 1
endif

build:
    @echo build and DEBUG is [$(DEBUG)]

debug:
Run Code Online (Sandbox Code Playgroud)

当您调用它时会发生以下情况:

$ make build
build and DEBUG is []
$ make build debug
build and DEBUG is [1]
make: Nothing to be done for `debug'.
$ make debug build
make: Nothing to be done for `debug'.
build and DEBUG is [1]
Run Code Online (Sandbox Code Playgroud)