makefile - Makefile 在目标主体中设置全局变量
问题描述
我想通过一个配方设置一个全局变量,然后在另一个独立的配方中引用该变量
下面的代码是一个示例代码,它在配方中设置变量,但如果在配方之外引用,变量将保持初始值
ACTIVE = a
switch:
ifeq ($(ACTIVE),b)
ACTIVE=$(shell echo 'a')
else
ACTIVE=$(shell echo 'b')
endif
print:
$(info acitve = $(ACTIVE))
我知道有一些方法可以将特定于目标的变量的值广播到依赖目标,但这不是我想要的。
解决方案
您可以使用$(eval ...)
它,尽管它几乎总是一个坏主意。我不得不假设您的实际情况要复杂得多,因为有许多更好的方法可以完成您在示例 makefile 中实际提供的内容。
switch:
$(eval ACTIVE=$(if $(filter-out a,$(ACTIVE)),a,b))
推荐阅读
- c# - C# - 从没有嵌套循环的列表中匹配 2 个项目的最佳方法
- ios - iOS 用 UICollectionView 如何实现这种布局
- javascript - 更改类型矩阵surveyjs中的行文本
- javascript - 基于对象字段值 Angular 6 的颜色 td
- eclipse - Eclipse 插件:相当于命令行中的 org.eclipse.ui.startup
- python - 来自生成器的 tensorflow 数据集慢
- git - 如何从 Jenkins 工作页面隐藏有关共享库的 Git 信息?
- java - 在 hashMap 中存储信息的问题
> - powershell - 检索 Set-PrintConfiguration 的参数 PaperSize 的有效值
- android - 更改 NoActionBar 上的背景颜色弹出菜单