2013-08-12 2 views
0

Проще говоря, я хочу, чтобы дать имя правила в моем Makefile:Дайте имя правила в Makefile

A.ext : B.ext 
    compute A.ext from B.ext 

так, что я получаю что-то вроде этого:

.PHONY : my_rule 
A.ext : my_rule 
my_rule : B.ext 
    compute A.ext from B.ext 

Но это еще не эквивалентен первому, так как my_rule всегда выполняется, даже если B.ext не изменился. Как я могу достичь эквивалентности?

Это обрезанная выход make -d:

Considering target file `A.ext'. 
    Considering target file `my_rule'. 
    File `my_rule' does not exist. 
    Considering target file `B.ext'. 
    Finished prerequisites of target file `B.ext'. 
    No need to remake target `B.ext'. 
    Finished prerequisites of target file `my_rule'. 
    Must remake target `my_rule'. 

(Поэтому я хочу, чтобы это то, что у меня есть еще одно правило C.ext :| my_rule.)

+2

Вы столкнетесь с той же проблемой «всегда работает» с этой целью «C.ext», как вы это делали с цель A.ext. Фоллические цели [не должны быть] (http://www.gnu.org/software/make/manual/html_node/Phony-Targets.html#Phony-Targets) - это префикс реальных целевых файлов. –

ответ