Измените makefile на все целевые места в файле - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть большой make-файл со всеми и фальшивыми целями, теперь я хочу изменить его место в файле, т.е. не в начале файла

это работает

all: tdir execute build run

tdir:
   @mkdir -p "$(DIR)"
   DIR  := $(CURDIR)

m := $(shell ftr build)
m := $(subst ],,$(subst [,,$(m)))
execute:
 echo test

если я поменяю место на все, как это, оно не работает

tdir:
   @mkdir -p "$(DIR)"
   DIR  := $(CURDIR)

m := $(shell ftr build)
m := $(subst ],,$(subst [,,$(m)))

all: tdir execute build run
execute:
 echo test

Я знаю, что у меня есть tdir, прежде чем все, Make делает решение для такого рода проблемы?давайте предположим, что я хочу переместить all вниз

1 Ответ

0 голосов
/ 26 сентября 2018

Если вы запускаете make, не пропуская ни одной цели в командной строке, то по умолчанию она становится первой целью в make-файле.Начиная с руководства

9.2 Аргументы для определения целей

...

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

...

Вы можете управлять выбором цели по умолчанию из вашего make-файла.используя переменную .DEFAULT_GOAL (см. Другие специальные переменные).

Авторы make-файлов обычно вызывают первую (по умолчанию) цель all, но не всегда.Иногда это называется default или что-то еще.Make не придает особого значения all.

Как сказано в руководстве, вы можете явно выбрать цель по умолчанию, установив специальную переменную .DEFAULT_GOAL.Так что

.DEFAULT_GOAL := all

tdir:
    ...


all: tdir execute build run
    ...

будет вести себя так, как вы хотите.Но без .DEFAULT_GOAL := all целью по умолчанию является tdir, и если вы хотите сделать all, вы должны указать эту цель в командной строке:

$ make all

.DEFAULT_GOAL используется редко.Обычно люди сначала пишут цель по умолчанию в make-файле и называют ее all.

...