2014-12-19 2 views
4

У меня есть Makefile, где ни один из целевых ссылочных файлов, поэтому, если это можно сделать в некотором цикле, это будет .Можно ли сделать все цели '.PHONY'? (gmake)

Есть ли способ установить каждую цель в make-файле как .PHONY?


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

+0

Какой эффект/польза от конкретных целей вы пытаетесь получить здесь? Я не знаю, как сделать то, что вы хотите, но мы могли бы получить тот же эффект/преимущества другим способом. –

+0

@ Этан Рейснер, уточненный в вопросе. – ideasman42

+0

У заданных целей есть ** любые ** неличные цели? То есть есть ** любые ** цели в make-файле, которые должны ** когда-либо ** следовать нормальным правилам правила относительно предпосылок существования/временных меток/и т. Д.? –

ответ

3

Вы можете обеспечить цели всегда строить определяя одну пустую «FORCE» цель и есть все, что вы другие цели зависят от него

target1: FORCE 
     ./foobar [email protected] 
target2: FORCE 
     ./dongle [email protected] 
FORCE: 

(как это было предложено в make manual)

Вы можете также запустить «make -B» вместо «make»?

`-B' 
`--always-make' 
    Consider all targets out-of-date. GNU `make' proceeds to consider 
    targets and their prerequisites using the normal algorithms; 
    however, all these targets are remade, regardless of the status of 
    their prerequisites. 
+0

Добавлена ​​ссылка сейчас. – andree

+1

Аргумент '-B' хорош, если make вызывается из скрипта, но если вы хотите иметь make-файл в корне проекта, любая загрузка может забыть передать аргумент' -B', даже если его документировано. вкратце - фиктивная цель (которая, по нашему мнению, не соответствует имени файла), обеспечит предсказуемое поведение для любого вызывающего make из командной строки. – ideasman42

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