【发布时间】:2020-04-30 04:20:33
【问题描述】:
我的项目结构如下所示:
.
└── src
├── Module1
│ ├── source1.cc
│ ├── source2.cc
│ └── source3.cc
├── Module2
│ ├── source1.cc
│ ├── source2.cc
│ └── source3.cc
└── Module3
├── source1.cc
├── source2.cc
└── source3.cc
我有一个隐式规则,将为每个源文件创建一个目标文件,并维护目录结构(例如,src/Module1/source2.cc 将编译为obj/Module1/source2.o)。
但是,我现在想要一个隐式规则来为每个模块创建存档文件。例如,从src/Module2 编译的每个目标文件都将添加到obj/Module2.a。我的第一个想法看起来与我对目标文件的隐含规则非常相似:
obj/%.a: $(wildcard obj/%/*.o)
@mkdir -p $(@D);
ar -crs "$@" $^;
这会将编译目标文件的工作交给其他隐含规则。但是,这里的问题是% 字符没有展开。
有没有办法从通配符函数调用中的隐式规则访问%?
【问题讨论】:
标签: makefile gnu-make gnu unix-ar