makefile - 如何从 Makefile 中的文本文件中提取值?
问题描述
这是我的 Makefile 中的代码片段:
%/foo: %/bar.yaml
$(BINARY) generate -g go \
--package-name {COOL_VALUE}
# COOL_VALUE should be the value for a unique `x-cool-value` key from `bar.yaml`.
例如,这里是bar.yaml
:
abc:
xyz: Hi StackOverflow!
x-cool-value: v1
我想提取v1
价值。
例如,
make foo1/foo2/foo
> ./binary generate -g go \
--package-name v1
# since foo1/foo2/foo/bar.yaml had a `v1` value for `abc.x-cool-value` key.
解决方案
你不能使用 makefile 语法做这样的事情(至少它不值得)。弄清楚如何使用 shell 命令执行此操作,然后将该 shell 命令放入您的 makefile 配方中。
例如:
$ sed -n 's/^ *x-cool-value: *//p' foo1/foo2/foo/bar.yaml
v1
所以,在你的makefile中:
%/foo: %/bar.yaml
$(BINARY) generate -g go \
--package-name $$(sed -n 's/^ *x-cool-value: *//p' $<)
或者你可以尝试找一些命令行工具来解析 YAML 并让你查询;可能有一个。
推荐阅读
- mongodb - 筛选 MongoDB 聚合中的查找集合
- javascript - JavaScript - 直接在多行字符串中循环遍历数组并包含值
- python - Pyside6 应用程序在 2 次定时器超时和图片上的蓝色色调后退出
- r - 我应该如何获得均值和标准差取决于“日”和“类别”列,而无需在 R 代码中手动过滤
- java - 任务“:app:javaPreCompileDebug”执行失败
- nanoframework - 我喜欢将纳米框架扩展到 AURIX 产品,从哪里开始?
- xilinx-ise - Xilinx ISE Design Suite 14.7 未安装
- apache-kafka - Kafka 消费者的问题(提供的成员在当前一代中未知)
- ruby-on-rails - nil:NilClass 的未定义方法`klass`
- asp.net - 我们如何在不使用外部 IP 的情况下在 GCP 中部署 ASP.NET Framework 映像?我的应用程序在 ASp.net Windows 窗体中,我想在 GCP 上部署它