makefile - 在 patsubst 中使用 % 两次
问题描述
我想为每个输入词生成两个输出词,它们是连续的,并应用于patsubst
它们。
我想要的非工作原型:
$(patsubst %.o,%.a.o %.so.o,$(OBJ))
% 的第二次出现没有被替换,而是%
出现了一个普通的。
没有给出所需顺序的工作版本:
$(patsubst %.o,%.a.o,$(OBJ)) $(patsubst %.o,%.so.o,$(OBJ))
例子:
输入:
foo.o bar.o
期望的输出:
foo.a.o foo.so.o bar.a.o bar.so.o
如何获得所需的输出?
解决方案
两个嵌套的 foreach 循环可以解决您的问题。一个用于文件,另一个用于扩展。下面的代码应该可以解决您的问题。
OBJS = foo.o bar.o
EXTS = a.o so.o
OUT = $(foreach file, ${OBJS}, \
$(foreach ext, ${EXTS}, \
$(patsubst %.o, %.${ext}, ${file})))
推荐阅读
- ios - Swift - 将数据附加到自定义字典
- javascript - 将附加值添加到定义为数组的 Typescript JSON 键
- c++ - MS Native 单元测试 - 来自线程的 Assert::Fail 不起作用
- javascript - 命令失败:gradlew.bat app:installDebug -PreactNativeDevServerPort=8081
- python - 在 Jenkins 中构建 Docker 映像时如何传递 AWS 凭证?
- xaml - 如何在 xbox 上更改 AppBarButton 的 MediaPlayerElement 样式?
- angular - PrimeNg 日历以角度显示 6 行日期
- odoo - 会不会是破坏odoo系统的原因?
- java - 你能在其他条件语句中使用条件语句吗?
- c# - NoTextEdit ShapeLock 不工作 - OpenXML SDK