gpt4 book ai didi

Makefile 条件不尊重特定于目标的变量

转载 作者:行者123 更新时间:2023-12-01 02:14:22 26 4
gpt4 key购买 nike

有没有办法使用 native Makefile if-else 条件并使其尊重特定于目标的变量重新分配?

示例 Makefile:

#!/usr/bin/make

CONFIG = Debug

.PHONY: test printme

test: override CONFIG=Release
test: printme
@echo "Done."

printme:
ifeq "$(CONFIG)" "Debug"
@echo "should be DEBUG -> $(CONFIG)"
else
@echo "should be RELEASE -> $(CONFIG)"
endif

运行 make test打印以下输出:
should be DEBUG -> Release
Done.

我正在寻找的输出是 should be RELEASE -> Release我怎样才能做到这一点?我需要改用 shell 条件吗?

最佳答案

这种行为对我来说似乎是合乎逻辑的:在解析 Makefile 时,CONFIG定义为 Debug . ifeq条件使用 CONFIG 的值它知道那个时候。因此它选择了ifeq输出“应该是调试”的分支。

特定于目标的变量仅定义为 Release与目标 test .其先决条件printme还知道特定于目标的变量和输出 Release .

我建议您将变量设置为 make在命令行上用于您想要的目的。调用时要写的字符不多了make但带来的一切你似乎都愿意。

make CONFIG=Release

关于Makefile 条件不尊重特定于目标的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26251557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com