Использование флага в цели Makefile - PullRequest
0 голосов
/ 27 января 2020

Предположим, у меня есть Makefile, подобный этому:

(more Makefile code)

%_dev.pdf: %.csv
    # do stuff that

%_prod.pdf: %.csv
    # do stuff

Мне нравится иметь быстрый прогон разработки и более длинный прогон продукта. Код выше отражает это. Однако это приводит к избыточному коду. Поэтому я хотел бы сделать что-то вроде этого:

MODE?=dev

%_$(MODE).pdf: %.csv
    # do stuff

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

1 Ответ

1 голос
/ 27 января 2020

Ваш код действителен.

Вместо суффиксов вы можете просто встроить в другой каталог:

MODE := dev # Immediate assignment, make MODE=prod overrides it.
build_dir := ${MODE}

${build_dir}/%.pdf : %.csv | ${build_dir}
    # commands

${build_dir} :
    mkdir -p $@
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...