2012-01-10 3 views
4

У меня есть немного понимания проблемы следующие gmake синтаксис:GNU сделать добрейшей из двойной толстой кишки

OBJ = foo.o bar.o 

$(OBJ): %.o: %.cpp 
    $(CC) -c -MMD -MP $(INCLUDES) $(CFLAGS) $< -o [email protected] 
    @sed (...create empty targets in file...) 

Я не уверен, что $ (...):% .o:% .cpp делает !?

Я думаю, что это может перевести «% .o:% .cpp» в правильные зависимости% .cpp - не так ли? Google не очень помогает здесь - он находит только обычную двойную двоеточие (цель: :), что-то другое!

Любые советы? Благодаря!

+0

Это _widely_ документировано в Интернете. Какие исследования вы проводили? –

+3

, вероятно, неправильно - не зная, что это называется «правило статического шаблона» – 0815ZED

+4

@LightnessRacesinOrbit: Трудно найти в Google шаблон синтаксиса. Действительно, единственный способ сделать это (с первых принципов) - это тралить документацию, пока вы не заметите шаблон. –

ответ

6

Это static pattern rule.

$(OBJ) - это список целей. Значение %.o : %.cpp означает «для каждой цели в списке, которая соответствует %.o, она зависит от %.cpp» (где соответственно заменяется %).

Смежные вопросы