gnu-make - 如何在配方中的宏中嵌入换行符?
问题描述
我有一个这样的目标:
curly:
curl --header "Content-Type: application/json" --data \
'data line 1 \
data line 2' \
${URL}
重要的是两条数据线分别回显,以便 Makefile 的用户更容易看到正在发生的事情。
这很好用。但后来我想添加第二个目标。我不想复制数据,所以希望定义一个宏并在两个目标中使用它:
DATA = data line 1 \
data line 2
curlier:
curl --header "Content-Type: application/json" --data \
'${DATA}' \
${URL2}
这也不行。该命令正确执行,但在回显配方时数据线一起运行。
我尝试了定义换行宏并将其嵌入到 DATA 字符串中的技巧,但无济于事。
我可以通过反复调用 make 来获得干净的输出,但我的审阅者不喜欢这样。
还有其他建议吗?
解决方案
这就是我最终的结果:
curly_URL := http://somewhere
curlier_URL := http://somewhere_else
CURL_URL ?= ${$@_URL}
# Slightly unusual approach in order to keep the command-line output legible.
curly curlier:
curl --header "Content-Type: application/json" --data \
'data line 1 \
data line 2' \
${CURL_URL}
H/T 保利·涅米宁
推荐阅读
- android - 动态更改 TextView 的样式和文本
- database - RESTful API:根据 URL/端点连接到特定数据库
- c# - 如何将数组从 Angular 6 传递到 ASP.NET Core API 以获取 GET 方法?
- css - 水平文本旁边的垂直文本反应原生?
- reactjs - 在 Promise 之外未定义 Redux 操作
- reactjs - 如何在 React Native 中创建单个视图节点
- google-apps-script - 我会在哪里放置文件搜索包含某些单词
- javascript - JS - 如何挂钩来自不同文件的成功和错误回调
- python - 如何在熊猫中对时间值进行排序
- postgresql - Hibernate 在尝试使用生成的 UUID 持久化 DTO 时不断询问 hibernate_sequence