Есть ли способ пропустить цель make?

Это руководство было удалено из пакета CentOS man-pagesв 2014 году , когда CentOS перешла на использование systemd . Из журнала изменений наhttps://centos.pkgs.org/7/centos-x86_64/man-pages-3.53-5.el7.noarch.rpm.html:

2014-02-11 - Peter Schiffer  - 3.53-5
- resolves: #1058101
added note about default values to the nscd.conf(5) man page
- resolves: #1059829
added three pthread_mutex* man pages from POSIX.1-2008
- resolves: #1062906
removed boot(7) man page

Устраненный номер ошибки ссылается на средство отслеживания ошибок Red Hat , но ошибка не является общедоступной.

1
04.11.2020, 23:23
1 ответ

Если make-файл выглядит так:

code-style-check: source.c
        tool-you-dont-have

myprogram: code-style-check source.c
        compile source.c -o myprogram

, то вы можете избежать запуска tool-you-dont-have, создав файл с именемcode-style-check:

touch code-style-check

Make увидит, что code-style-checkновее, чем source.c, и не будет пытаться его перестроить.

Это не работает, если code-style-checkявляется фальшивой целью, объявленной с.PHONY: code-style-check:фальшивыми целями, не являющимися именами файлов.

Обратите внимание, что если code-style-checkимеет зависимости, они больше не будут учитываться при принятии решения о перестроении myprogram. В приведенном выше примере это не имеет значения, потому что code-style-checkне имеет зависимостей, которых нет у myprogram.

Альтернативное решение с помощью GNU make, которое работает даже для фальшивой цели, заключается в запуске

make -o code-style-check …

Параметр -oсообщает make считать code-style-checkболее старым, чем все, что уже есть (, в отличие от подхода touch, который делает файл более новым, чем все, что уже есть ), а также не считать попробуй восстановить. Опять же, если зависимости code-style-checkтакже нужны для myprogram, они не будут построены.

6
18.03.2021, 22:52

Теги

Похожие вопросы