2016-05-27 4 views
0

Представьте, что я хочу поставить специальную марку (не беспокойтесь о содержании этой марки) на любой исполняемый файл, который я создаю. У меня есть правило, чтобы создать штамп. Но я НЕ хочу, чтобы штамп воссоздавался, ЕСЛИ остальная часть make-файла ничего не сделала:Есть ли правило «make» для запуска команды ровно один раз, но только в том случае, если в остальной части make-файла есть что-то делать?

И он должен работать с make -j (параллельно). Вот псевдо-код Makefile, чтобы начать с (она не работает):

all: a b 

.PHONY: buildstamp 
buildstamp: all 
     date > buildstamp.txt 

a: a.cpp 
     cp buildstamp.txt a 

b: b.cpp 
     cp buildstamp.txt b 

Опять же, buildstamp должен работать только тогда, когда любая цель будет обновляться, и даже тогда он должен только точно выполняться один раз (а не раз в мишень). И он должен выполнить, прежде чем любой из этих целей запуска явно (в противном случае buildstamp.txt может иметь частичный результат.

Спасибо!

ответ