make / Makefile: опция CLI для «отключения» зависимости от цели - PullRequest
0 голосов
/ 30 мая 2019

Я исследую функцию некоторого программного обеспечения, которое используется в очень зрелом Makefile, чтобы увидеть, может ли эта функция быть включена в поток. Есть цель, подобная следующей:

my_target: dependency_1 dependency_2
        echo foo
        touch bar
        # etc...

При регулярном использовании зависимость_2 всегда вызывается перед выполнением команд my_target. Но для моих целей исследования я хочу выборочно вызывать dependency_2 из собственной команды make. И затем сделайте my_target после, возможно, несколько раз, не повторяя каждый раз зависимость_2.

В настоящее время я просто копирую / вставляю my_target в my_target_2 и удаляю зависимость из my_target_2 (достаточно просто), но мне интересно, есть ли опция командной строки для отключения зависимости цели без изменения файла.

РЕДАКТИРОВАТЬ: dependency_2 является целью PHONY

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Нет способа сделать это без редактирования make-файла, о котором я могу подумать.

Вы можете поместить dependency_2 в переменную, а затем использовать переменную в списке обязательных компонентов my_target:

dependency_2 = dependency_2

my_target : dependency_1 $(dependency_2)

затем, когда вы не хотите его перестраивать, запустите make dependency_2=, чтобы сбросить переменную на пустую.

1 голос
/ 30 мая 2019

Но для моих целей исследования я хочу избирательно вызывать dependency_2 из собственной команды make

Это делается так же просто, как make dependency_2

И затем сделать my_target после, возможно, несколько раз, без повторного выполнения зависимостей_2 каждый раз

Обычно, зависимость_2 должен быть файлом на диске, поэтому make пропустил бы его перестройку до тех пор, пока не будут выполнены его собственные предварительные требования (исходные файлы).), изменяются.

Но если dependency_2 является целью .PHONY («поддельный файл»), будет перестраиваться при каждом запуске.В этом случае вы все еще можете обмануть его так:

echo "dependency_2:;@:" | make -f Makefile -f -

Однако make выдаст предупреждение о переопределении рецепта для зависимости_2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...