обман времени модификации файла? - PullRequest
1 голос
/ 11 марта 2011

Итак, у меня есть make-файл, и в этом make-файле есть правило, которое сначала выполняет прекомпиляционное преобразование и модифицирует исходный файл, а затем компилирует его в нужную цель. Я хотел бы знать, есть ли способ обмануть / заставить заставить думать, что источник на самом деле не был изменен, так что make будет перекомпилироваться только тогда, когда пользователь изменяет, а не когда правило make изменяет источник. Я попытался использовать команду touch для возврата метки времени изменения после выполнения модификации, но безуспешно. У кого-нибудь есть какие-либо идеи? Благодаря.

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Один из возможных способов выполнить то, что вы хотите, - это создать вторичную цель - это файл нулевой длины, который действует как флаг, чтобы сказать, сделали ли вы то, что хотите, или нети иметь правило, которое выполняет прекомпиляцию преобразования на основе этого файла.

Я думаю, у меня есть вопрос о том, что вы пытаетесь сделать.Почему преобразование на месте вместо преобразования создает промежуточный файл, который затем компилируется.

Преобразования на месте могут быть проблематичными, особенно если процесс преобразования не идемпотентен.

Редактировать 1

Исходя из вашего вопроса, я бы сказал, что вы можете сделать это:

target.flag: target.original-file
    touch target.save -r target.original-file
    <do transformation>
    touch target.original-file -r target.save
    rm target.save
    touch target.flag

С помощью прикосновения с помощью "-rmsgstr "опция говорит, чтобы получить дату доступа из указанного файла.Таким образом, вы будете сохранять дату исходного файла во временном файле.Затем выполните преобразование, затем с помощью прикосновения извлеките дату из временного файла и поместите ее обратно в теперь преобразованный файл.

0 голосов
/ 11 марта 2011

Как насчет этого:

foo.target: foo.source
    $(TRANSFORM) $<
    $(COMPILE) $<
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...