инструмент для создания программного обеспечения - PullRequest
2 голосов
/ 25 августа 2009

Мне нужно что-то вроде make i.e. т.е. зависимости + выполнение команд оболочки, где сбойная команда останавливает выполнение. Но более глубоко интегрированный с shell, т.е. теперь в make каждая строка выполняется в отдельном контексте, поэтому непросто установить переменную в одной строке и использовать ее в следующей строке (я не хочу escape-символа в конце строки, потому что он не читается ). Я хочу простой синтаксис (без XML) с потоком управления и функциями (чего не хватает в make). Он не должен иметь поддержку для компиляции. Мне нужно просто связать вместе несколько компонентов, созданных с помощью автоинструментов, упаковать их, запустить тест и опубликовать результаты.

Я посмотрел на: make, ant, maven, scons, waf, nant, rake, cons, cmake, jam, и они не соответствуют моим потребностям.

Ответы [ 6 ]

3 голосов
/ 27 августа 2009

взгляните на doit

  • вы можете использовать команды оболочки или функции python для определения задач (сборок).
  • очень прост в использовании. писать скрипты на питоне. "no api" (вам не нужно ничего импортировать в вашем скрипте)
  • имеет хорошую поддержку для отслеживания зависимостей и целей
2 голосов
/ 25 августа 2009

Взгляните на изготовить .

Если это не отвечает вашим потребностям или вы не хотите писать свой скрипт сборки на Python, вы также можете использовать комбинацию сценариев оболочки и fabricate . Напишите сценарий, как если бы вы строили свой проект вручную, но перед вызовами сборки добавьте «fabricate.py», чтобы автоматически управлять зависимостями сборки.

Простой пример:

#!/bin/bash
EXE="myapp"
CC="fabricate.py gcc" # let fabricate handle dependencies
FILES="file1.c file2.c file3.c"
OBJS=""

# build link
for F in $FILES; do
    echo $CC -c $F
    if [ $? -ne 0 ]; then
        echo "Build failed while compiling $F" >2
        exit $?
    fi
    OBJS="$OBJS ${F/.c/.o}"
done

# link
$CC -o $EXE $OBJS
1 голос
/ 25 августа 2009

Учитывая, что вам нужен поток управления, функции, все, что работает в одной среде, и нет XML, похоже, вы хотите использовать доступные языки сценариев оболочки (sh / bash / ksh / zsh) или Perl (вставьте свой любимый язык сценариев здесь!).

Замечу, что вы не смотрели a-a-p . Я не знаком с этим, за исключением того, что это система подделки от людей, которые принесли нам vim. Так что вы можете посмотреть на это.

0 голосов
/ 25 августа 2009

Возможно, вы захотите взглянуть на SCons ; это Make-замена, написанная на Python.

0 голосов
/ 25 августа 2009

У меня были такие же потребности. Мое текущее решение состоит в том, чтобы использовать make-файлы для точного представления зависимости графа (вы должны прочитать «Рекурсивное создание считается вредным» ). Эти make-файлы запускают скрипты bash, которые принимают переменные make-файла в качестве параметров. Таким образом, вам не придется сталкиваться с проблемой контекста оболочки, и вы получите четкое разделение между зависимостями и действиями.

В настоящее время я рассматриваю ваф, так как он кажется хорошо продуманным и достаточно быстрым.

0 голосов
/ 25 августа 2009

Сочетание make-файла и языка сценариев позволяет выбрать, какой make-файл запускать за раз.

...