Так выглядит нынешний путь, который выглядит довольно неуклюжим ..
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, введите автоматические переменные:
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-переменные в автоматические переменные раздел.