无论如何要减少GNU make中的重复先决条件模式?

时间:2012-10-06 04:32:21

标签: c++ c makefile gnu-make

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

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

是否有可用于表示当前目标并减少重复的变量?

谢谢!

2 个答案:

答案 0 :(得分:6)

步骤1,引入自动变量:

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 $@ $^

答案 1 :(得分:2)

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

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

automatic variables部分的GNU Make文档中有更多有用的make变量。