Подтвердить что ты не робот

Почему никто не создал систему сборки с открытым исходным кодом для мертвого мозга?

Я хочу создать общую библиотеку. GNU/Linux - это платформа разработки и назначения. C - язык реализации.

Я не могу решить, как я хочу настроить систему сборки и продолжать перемещаться по трем вариантам, каждый из которых имеет множество причин, чтобы не понравиться:

  • созданный вручную Makefiles - я работал так почти исключительно в прошлом
  • GNU Autotools. В начале этого года я использовал autotools для создания общей библиотеки C, но забыл, как я это сделал, и где все сотни обучающих программ были использованы для сортировки.
  • waf - предположительно простой, но не простой. У меня это работает сегодня днем.

Я не могу решить, для чего идти. Я соглашусь на одно, начинаю работать, а затем сталкиваюсь с проблемой и решая другую систему лучше. Я застрял застрял. Может кто-то пролить свет на это, пожалуйста, что может помочь мне решить вопрос?

4b9b3361

Ответ 1

Вот некоторые ссылки (и цитаты с сайта) на инструменты, которые я заметил за эти годы:

PreMake: вы являетесь менеджером программного проекта. Ваши пользователи запрашивают файл рабочей области Visual Studio, но у вас нет Visual Studio! Или, возможно, вы разработчик Windows, пытающийся синхронизировать Makefile в Linux-порту. Это обычная проблема для проектов с открытым исходным кодом: ограничьте пользователей одним инструментом сборки - отталкивайте потенциальных вкладчиков или вручную поддерживайте два, три или более набора скриптов сборки. Введите Premake.

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

buildconf: началось как небольшая подготовка к сборке script... и за эти годы выросла довольно полезная утилита, экономя время и усилия с запросами поддержки и кросс-платформенной компиляцией. Это тот же тип script, который часто встречается среди проектов, которые используют GNU Build System, также известные как GNU Autotools или для каждого инструмента индивидуально как Autoconf, Automake и Libtool. В этих проектах часто создается пользовательский помощник script, который подготавливает систему сборки для своих разработчиков проектов, обычно запуская различные инструменты, такие как libtoolize, autoconf или autoreconf. Этот script часто называют либо buildconf, либо autogen.sh, но цель та же: подготовить вашу систему сборки для компиляции

BSDBuild: BSDBuild (ранее csoft-mk) - простая, автономная и портативная система сборки, основанная на традиционном 4.4BSD share/mk. BSDBuild позволяет создавать make файлы в стиле BSD, но без BSD делает расширения (вместо этого он использует стандартные фрагменты Bourne script), поэтому система сборки переносима для большинства операционных систем и делает ароматы.

iCompile: iCompile система сборки с нулевой конфигурацией

OMake: (OCaml) OMake - это система сборки, предназначенная для масштабируемости и переносимости.

BakeFile: Bakefile - кросс-платформенный генератор make файлов кросс-компилятора. Он принимает независимое от компилятора описание задач сборки в качестве входных данных и генерирует собственный make файл (autoconf Makefile.in, проект Visual С++, bcc makefile и т.д.).

SCons - это инструмент для создания программного обеспечения с открытым исходным кодом, то есть инструмент построения следующего поколения. Подумайте о том, что SCons является улучшенной кросс-платформенной заменой классической утилиты Make со встроенной функциональностью, подобной autoconf/automake и кэшам компилятора, например ccache. Короче говоря, SCons - это более простой, надежный и быстрый способ создания программного обеспечения.

Сделать проект: "Сделать проект" - это bash script, что делает скелеты проекта. Он автоматизирует задачу запуска нового проекта с информацией, предоставленной из командной строки. Пакет, созданный по умолчанию, представляет собой проект "hello world" выбранного скелета, который использует управляемые autotools.

Невосстановленные или мертвые проекты (07-2012)

cppmake: Cppmake - это интерфейсный модуль, который позволяет создавать программы на С++ с меньшими усилиями и большей точностью, чем вручную писать make файлы.

spray: Спрей - это инструмент построения, помогающий вам в настройке, создании и установке вашего проекта. Он аналогичен цели автоуталам или CMake, но созданный в соответствии с духом SCons и waf с использованием языка программирования Python.

Ответ 2

Хорошо: все системы сосут. Некоторые просто сосут меньше. как заявляет почтовая система mutt. Тем не менее, некоторые быстрые комментарии:

  • Qt довольно хорошо документирован, и мне нравятся файлы .pro. Кроме того, это надежная кросс-платформенная книга, и вы теперь получаете IDE и т.д., Если хотите.
  • CMake - это то, что мы используем на работе, и оно тоже кросс-платформенное, можно привыкнуть к но я все же считаю это причудливым.
  • GNU Autoconf и др. - это то, что я использую для своих проектов. Причудливый, но я привык к этому и базиллион рабочих примеров на Intertubes.
  • Scons, может быть?

Ответ 3

Поскольку цель вашей системы сборки заключается в установке библиотеки в целевые системы, вы должны использовать один из универсальных инструментов, с которыми знакомы все, кто устанавливает программное обеспечение.

Таким образом, основная цель системы сборки - гибкие возможности настройки.

То, с чем все могут работать, CMake и Autotools. Придерживайтесь их.

Ответ 4

Я использую mkproject (Make Project). Это простой инструмент autotools, который люди предлагают использовать, но он загружает вашу конфигурацию по умолчанию, как генератор проекта IDE, очень разумные минимальные, но полезные значения по умолчанию. Остальное зависит от вас просто с помощью простых autotools (info configure, info autoconf, info automake - вот ваши помощники, которые, кстати, строго следуют mkproject).

Вы всегда запускаете проект с некоторыми базовыми процедурами, редактируете configure.ac edit Makefile.am,..., mkproject делает это без вторжения на слой autotools или добавления нового синтаксиса. Приятно, что по аргументам он персонализирует ваш проект autotools с нуля, экономя время и ошибки.

Если вы используете autotools и генерируете случайные/много проектов, попробуйте, он поставляется с man и info-страницей, и даже веб-сайт рассказывает, как его использовать.