从命令行和环境变量中设置Makefile变量的区别

6

有没有办法检测变量是从环境中设置还是通过命令行设置的?

我想区分使用make LIB=mylibmake且已定义$LIB的情况。


请在您与make相关的问题中加上[make]标签。有关原因,请参见http://meta.stackexchange.com/questions/24030/why-do-they-specify-makefile-tag-instead-of-make/26567#26567。 - P Shved
2个回答

6

是的。您可以使用origin函数确定变量定义的位置。

ifneq (,$(findstring environment,$(origin LIB)))
    # LIB由环境定义
else
    # LIB以其他方式定义
endif

0

对于非 GNU make,您可以运行 export 命令并使用 grep 查找相关变量。这仅适用于规则,并且只有在变量未设置为一次性(例如在 LIB=foo make 中)时才有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接