2009-08-25 3 views
2

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

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

+0

звучит как скрипты оболочки являются единственным вариантом –

ответ

1

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

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

+0

Downvoted почему? –

0

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

2

Посмотрите на fabricate.

Если это не соответствует вашим потребностям или если вы не хотите писать скрипт сборки в Python, вы также можете использовать комбинацию сценариев оболочки и изготовить. Напишите сценарий так, как если бы вы строили свой проект вручную, но добавляете вызовы сборки с помощью «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 
0

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

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

0

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

3

взглянуть на doit

  • вы можете использовать команды оболочки или функцию питона, чтобы определить задачи (сборки).
  • очень проста в использовании. писать скрипты в python. «Нет апи» (вам не нужно импортировать что-либо в сценарии)
  • имеет хорошую поддержку для отслеживания зависимостей и задачи
Смежные вопросы