0

我正在尝试创建一个makefile,因此在调用它时,语法将为make releaseor make debug

为此,我编写了以下生成文件:

release debug: mode := $@
release debug: build

build:
    *** actual build commands using $(mode) ***

但在制作过程中,当达到build规则时,$(mode)似乎是空的。

是否有更好/正确的构建调试和发布二进制文件?

4

1 回答 1

0

'$@' 自动变量仅在构建目标时可用。评估规则时它没有值。因此,在执行该行期间未设置“$@”:

release debug: mode := $@

考虑为“构建”和“发布”设置规则

release debug:
        $(MAKE) build mode=$@

build:

或替代方案(我认为不太直观,但更有效):

release: mode=release
debug: mode=debug

build:
    ...
于 2020-10-05T16:40:50.590 回答