Инструменты сборки на основе Python - PullRequest
14 голосов
/ 09 ноября 2010

В последнее время я смотрю на системы сборки и не могу найти ничего похожего на то, что хочу.Я считаю слишком низкими, мне не нравится синтаксис bjam и CMake , и мне действительно не нравится, что они предназначены только для C / C ++. Ant и NAnt также слишком ориентированы на язык.

Мне очень нравится идея инструмента для сборки, который использует настоящий язык программирования и Python вписывается в действительно хороший.Я смотрю на Scons и waf , и из этих 2 я нахожу waf как наиболее близкий к тому, что я хочу,но все же я вижу много работы, которая должна быть проделана для поддержки всего запланированного, когда я должен сосредоточиться на кодировании.

Вот что я хочу:

  • включаети библиотеки (для C / C ++, Java, C #, Python)

  • Я хочу использовать разные версии компиляторов и поддерживать разные целевые архитектуры ОС и ЦП:

    • для C / C ++: MSVC, gcc (cygwin, mingw, версия для Linux), llvm-gcc, DragonEgg, Clang
    • для C #: компилятор .Net, Mono (для windows и linux) - все этидля различных версий .Net (например, NAnt: «net-2.0», «net-3.5», «net-4.0», «mono-2.0», «mono-3.5» ...)
  • Я хочу использовать SWIG для поддержки генерации оболочек для C #, Python, Lua, Java и т. Д.

  • Я хочу больше, чем просто отладкаи релиз конфигурации - так же, как Visual STudio поддерживает это очень легко.Пример: проект совместно используемой библиотеки, созданный MSVC для переноса на C # и построенный с помощью mingw для переноса на Python, различные версии релизных версий - с неоптимизированной, полностью оптимизированной, производственной, запутанной ...

  • Я хочу рассмотреть возможность отслеживания проекта.Объяснено: если у меня есть проект с общей библиотекой, использующий SWIG, и другой проект C #, который загружает эту SWIG-оболочку, создание этого решения / среды / рабочего пространства будет означать копирование результирующей общей библиотеки, копирование других общих библиотек, которые эта общая библиотека использует в рабочемкаталог и сгенерированные C # оболочки для проекта C #, а затем создайте проект C #

  • Приятно иметь: развертывание на других машинах для тестирования сети

  • Приятно иметь: мне все равно, нужно ли создавать файлы проекта IDE (например, как это делает CMake для Visual Studio), потому что версии IDE и совместимость меняются, и существует множество хороших IDE (например, для C / C ++ CodeBlocks, CodeLite, Eclipse CDT - все они переносимы на флэш-накопитель, VS - нет), но хорошо бы иметь интеграцию make-файла - make-файл, который просто вызывает собственный make-файл / скрипт этого инструмента сборки- видел что-то похожее для Scons

Просматривая то, что я написал, я худойk Я слишком много просил :), но я думаю, что это послужит больше, чем мне

edit: забыл сказать, но я думаю, что это подразумевается от использования Python: я хочу, чтобы инструмент был кроссплатформенным

edit: возможно, то, что я ищу, еще не реализовано, но может иметь расширение waf для всего этого, или Scons может быть

1 Ответ

2 голосов
/ 09 ноября 2010

Я использовал Scons, и это хорошо, и вы действительно можете делать с ним все, потому что просто код на Python, а то, что не хватает, вы пишете на Python - это легко.

Некоторые говорят, что у него проблемы с очень большими проектами, у меня не было очень больших проектов, чтобы запустить его, поэтому я не знаю.

...