Вынудите Makefile выполнить сценарий прежде, чем построить цели

Я использую Makefiles.

Однако есть команда (zsh сценарий), я хочу выполненный, прежде чем любые цели будут выполнены. Как я делаю это?

Спасибо!

22
задан anon 23 January 2010 в 08:24
поделиться

2 ответа

Существует несколько методов для выполнения кода до того, как созданы цели. Какой из них вы должны выбрать немного, зависит от именно то, что вы хотите сделать, и почему вы хотите это сделать. (Что делает сценарий ZSH? Почему вы должны его выполнить?)

Вы можете понравиться, как @john предлагает; Размещение скрипта ZSH в качестве первой зависимости. Затем вы должны отметить цель ZSH ZSH , как .phony , если он фактически не генерирует файл с именем ZSH .

Другое решение (в GNU, как минимум) состоит в том, чтобы вызвать функцию $ (Shell ...) $ (Shell ...) как часть назначения переменного:

ZSH_RESULT:=$(shell zsh myscript.zsh)

Это выполнит скрипт, как только Makefile анализируется, а до выполняется любой цели. Он также выполнит скрипт, если вы вызываете Makefile рекурсивно.

25
ответ дан 29 November 2019 в 04:50
поделиться

Просто сделайте, что зависимость одной из других целей

foo.obj : zsh foo.c 
   rule for compileing foo.c

zsh: 
   rule for running zsh script.

или, альтернативно, сделайте вашу первую целевую целевую цену, зависящее от него

goal: zsh foo.exe
10
ответ дан 29 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

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