2015-01-06 2 views
0

Как я могу добавить метку времени в Makefile для .PHONY целейОтметка для фальшивой цели

phony_Target:Real_Target .phony_Target_Token_File 
    $(shell run_some_commands) 
    touch .phony_Target_Token_File 

Это лучшее, что я мог придумать. Но он ломается, когда .phony_Target_Token_File не существует (так как это рассматривается как неудовлетворенное условие).

Есть ли более разумный способ сделать это?

+0

Что вы пытаетесь сделать? Вы пытаетесь использовать фальшивую цель только тогда, когда это необходимо? Потому что это не то, как работают фальшивые цели. –

+0

Да, это то, что я имел в виду. Как следует использовать «PHONY»? – aiao

+0

http://www.gnu.org/software/make/manual/make.html#Phony-Targets –

ответ

1

.PHONY Цели не соблюдают предварительные временные метки, чтобы определить, должны ли они работать. Они всегда бегут. Для этого они и есть. 1.

Возможно, вы ищете empty target для использования в качестве штампа какого-либо события.

+0

Что делать, если я хочу запустить рецепт, но предпосылки запускаются только при необходимости? Лучшее, что я придумал, - это вызвать рекурсивно для предпосылки. Это немного субоптимально для debbugging. Есть ли альтернатива? – aiao

+0

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

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