目前的方式是这样的,看起来很笨拙..
ex1_test : ex1.o ex1_test.o
cc -o ex1_test ex1.o ex1_test.o
ex2_test : ex2.o ex2_test.o
cc -o ex2_test ex2.o ex2_test.o
ex3_test : ex3.o ex3_test.o
cc -o ex3_test ex3.o ex3_test.o
是否有一个变量可以用来表示当前目标并减少重复项?
谢谢!
第一步,引入自动变量:
ex1_test : ex1.o ex1_test.o
cc -o $@ $^
ex2_test : ex2.o ex2_test.o
cc -o $@ $^
ex3_test : ex3.o ex3_test.o
cc -o $@ $^
第 2 步,意识到这些规则看起来都一样,并将它们替换为模式规则:
ex%_test: ex%.o ex%_test.o
cc -o $@ $^
$@ 和 $^ 是你的朋友。$@ 是目标,$^ 是先决条件列表。
ex1_test : ex1.o ex1_test.o
cc -o $@ $^
在自动变量部分的 GNU Make 文档中有更多有用的 make 变量。