Использование GNU Make для построения скриптов - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть скрипт (язык VBScript, но, ради вопроса, это неважно), который используется как основа для ряда других скриптов - назовите его «базовый скрипт» или «скрипт-обертка»для других.Я хотел бы модулировать свой репозиторий, чтобы этот базовый сценарий можно было объединить с функциями, уникальными для конкретного экземпляра сценария, а затем перестроить позже, если один из двух изменится.

Пример:

  • baseScript.vbs - регистрация, создание отчетов и других общих функций.

  • queryServerFunctions.vbs - сценарий с конкретными, уникальными задачами (функциями), которые зависято функциях в baseScript.vbs.

Я хотел бы использовать make для объединения двух (или любого произвольного числа файлов с фрагментами скрипта) в один скрипт - скажем,queryServer.vbs - это полностью автономно.Этот автономный сценарий может быть затем перестроен с помощью make в любое время при изменении любого из его исходных сценариев.

Тогда возникает вопрос: могу ли я использовать make для управления сборками сценариев и, если да, чтоэто лучший или предпочтительный способ сделать это?

Если это имеет значение, моя среда сценариев - Cygwin, работающая на Windows 7 x64.

1 Ответ

0 голосов
/ 16 ноября 2011

Сочетание VBScript и GNU make необычно, поэтому я сомневаюсь, что вы найдете «предпочтительный способ» сделать это.Это конечно возможно.Возьмем ваш пример и добавим еще один скрипт с именем fooServer.vbs, чтобы показать, как работает решение для нескольких скриптов, вот простой make-файл:

# list all possible outputs here
OUTPUT := queryServer.vbs fooServer.vbs

# tell make that the default action should be to produce all outputs
.PHONY: all
all: $(OUTPUT)

# generic recipe for combining scripts together
$(OUTPUT):
        cat $+ > $@
# note: The first character on the line above should be a tab, not a space

# now we describe the inputs for each output file
queryServer.vbs: baseScript.vbs queryServerFunctions.vbs
fooServer.vbs: baseScript.vbs fooFunctions.vbs

, который создаст для вас два скрипта из их входных данных, и есливы касаетесь, например, queryServerFunctions.vbs, тогда только queryServer.vbs будет переделано.

Зачем все эти неприятности, хотя?

Цель make состоит в том, чтобы "восстановить" вещиэффективно сравнивая временные метки файлов, чтобы определить, можно ли безопасно пропустить этап сборки, поскольку входные данные не изменились с момента последнего обновления выходного файла.Предполагается, что этапы сборки являются дорогостоящими, поэтому стоит их пропустить, где это возможно, а выигрыш в производительности стоит того, чтобы пропустить слишком много из-за ошибок в make-файле или вводящих в заблуждение временных меток файла.

Для копирования несколькихмаленькие файлы вокруг, я бы сказал, простой пакетный файл, такой как

copy /y baseScript.vbs+queryServerFunctions.vbs queryServer.vbs
copy /y baseScript.vbs+fooServerFunctions.vbs fooServer.vbs

, будет лучше.

...