1

目前的方式是这样的,看起来很笨拙..

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

是否有一个变量可以用来表示当前目标并减少重复项?

谢谢!

4

2 回答 2

6

第一步,引入自动变量:

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 $@ $^
于 2012-10-06T04:54:36.677 回答
2

$@ 和 $^ 是你的朋友。$@ 是目标,$^ 是先决条件列表。

ex1_test : ex1.o ex1_test.o
    cc -o $@ $^

在自动变量部分的 GNU Make 文档中有更多有用的 make 变量。

于 2012-10-06T04:45:18.627 回答