命令行中的 Makefile 变量与环境中的变量

发布于 2024-08-08 01:03:00 字数 126 浏览 2 评论 0原文

有没有办法检测变量是否已从环境与命令行中设置?

我想区分使用 make LIB=mylib 调用 make 的人和使用 make 调用 make 并定义 $LIB 的人。

Is there a way to detect whether a variable has been set from the environment vs. on the command line?

I would like to distinguish between someone invoking make with make LIB=mylib vs. make and $LIB being defined.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

温柔少女心 2024-08-15 01:03:00

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

ifneq (,$(findstring environment,$(origin LIB)))
    # LIB was defined by the environment
else
    # LIB was defined some other way
endif

Yes. You can use the origin function to determine where a variable was defined.

ifneq (,$(findstring environment,$(origin LIB)))
    # LIB was defined by the environment
else
    # LIB was defined some other way
endif
划一舟意中人 2024-08-15 01:03:00

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

With non-Gnu make, you could run the export command and grep for the variable in question. This works only in rules and only as long as the variable is not set as a one-shot (like in LIB=foo make).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文