Есть ли способ уменьшить количество шаблонов дубликатов предварительных требований в 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

Есть ли переменная, которую я могу использовать для представления текущей цели и уменьшения дубликатов?

Спасибо!

1

Решение

Шаг 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 $@ $^
6

Другие решения

$ @ и $ ^ ваш друг. $ @ — это цель, а $ ^ — список предпосылок.

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

В документации GNU Make есть более полезные make-переменные в автоматические переменные раздел.

2

По вопросам рекламы [email protected]