And*_*zos 24 makefile gnu-make
我有一堆使用相同类型的make规则构建的应用程序:
apps = foo bar baz
all: $(apps)
foo: foo.o $(objects)
$(link)
bar: bar.o $(objects)
$(link)
baz: baz.o $(objects)
$(link)
Run Code Online (Sandbox Code Playgroud)
如果他们有扩展名(例如.x
),我可以制定一个模式规则:
%.x: %.o $(objects)
$(link)
Run Code Online (Sandbox Code Playgroud)
我不必为每个应用程序写出新规则.
但他们没有扩展,我很确定:
%: %.o $(objects)
$(link)
Run Code Online (Sandbox Code Playgroud)
将无法工作(因为它指定构建任何文件,您可以使用此规则).
反正有没有指定一个涵盖所有$(apps)
构建规则的规则?
Bet*_*eta 29
这看起来像静态模式规则的工作:
$(apps) : % : %.o $(objects)
$(link)
Run Code Online (Sandbox Code Playgroud)
%: %.o $(objects)
$(link)
Run Code Online (Sandbox Code Playgroud)
以上应该有效.
您可以通过将规则转换为静态模式规则来限制规则的范围,以便仅考虑您的目标列表:
$(apps) : % : %.o $(objects) # only consider this for $(apps) targets
$(link)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6960 次 |
最近记录: |