Любые хорошие инструменты сборки для проекта C ++, которые могут заменить make? - PullRequest
22 голосов
/ 10 сентября 2008

Мне интересно, есть ли какой-нибудь хороший и аккуратный инструмент для замены GNU Autotools или Make для создания очень большого проекта C ++, который настолько сложен в использовании.

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

спасибо за любые рекомендации

Ответы [ 9 ]

18 голосов
/ 10 сентября 2008

Двигатель Google V8 JavaScript написан на C ++ и использует SCons , так что, думаю, это один голос за него.

18 голосов
/ 10 сентября 2008

CMake ? (создает make-файлы, поэтому технически не является заменой как таковой).

Я также видел, как " SCons " недавно появилось в нескольких местах. Хотя сам ничего с этим не создал.

15 голосов
/ 11 сентября 2008

Взгляните на waf .

Я думаю, вы можете рассматривать это как полную замену для make и autotools. Он основан на питоне. Одна вещь, которая мне нравится в waf, - это то, что сам скрипт waf ~ 100kb автономно помещается в корневой каталог вашего проекта. Это в отличие от make или rake and friends, где система сборки должна быть установлена ​​первой. Вы должны установить Python> = 2.3.

~$ ./waf configure && ./waf && ./waf install

Waf-эквивалентом Makefiles является файл wscript. Это скрипт на языке python, который читает waf, и он определяет как минимум 3 функции: set_options(), configure(conf) и build(bld). Вы можете догадаться, что делает каждый из них.

Для быстрого запуска я рекомендую просмотреть файлы demos / cpp / * в исходном дистрибутиве. Также взгляните на файл doc / waf.pdf ; это 12-страничный документ, который поможет вам быстро приступить к работе.

11 голосов
/ 12 января 2009

Для сравнения скорости различных инструментов сборки C ++ вы можете взглянуть на этот тест: http://retropaganda.info/~bohan/devel/wonderbuild/benchmarks/time.xml

5 голосов
/ 08 октября 2008

Ноэль Ллопис написал несколько статей, сравнивающих системы сборки. Часть 1 «Поиска совершенной системы сборки» находится по адресу http://gamesfromwithin.com/the-quest-for-the-perfect-build-system. Часть 2 следует на том же сайте. Число повторных попыток сообщается в http://gamesfromwithin.com/?p=104.

Выводы: SCons слишком медленная ... Jam - победитель.

5 голосов
/ 10 сентября 2008

Мы используем Jam для сложного проекта C ++ - одним из преимуществ является то, что он прекрасно кроссплатформенный Вместо того, чтобы я получал выгоду, просто взгляните на эту ссылку: http://www.perforce.com/jam/jam.html

2 голосов
/ 09 февраля 2009

Я использую SCons в большом проекте c ++ (как в Linux, так и в Windows), и он работает очень хорошо.

scons all -j8 (который компилирует объектные файлы параллельно) очень круто!

2 голосов
/ 10 сентября 2008

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

http://miller.emu.id.au/pmiller/software/cook/

1 голос
/ 10 февраля 2009

Я использую bakefile для процесса сборки, и я стал большим поклонником!

Мне больше никогда не нужно писать Makefile самостоятельно, не говоря уже об ужасных сценариях GNU autotools. Все, что мне нужно сделать, это предоставить файл XML, который описывает цели сборки. Bakefile может преобразовать это в Makefile, который получает все зависимости (заголовочный файл) и т. Д., Где могут быть выбраны различные форматы Makefile (вставка списка из документации):

available formats are:
    autoconf      GNU autoconf Makefile.in files
    borland       Borland C/C++ makefiles
    dmars         Digital Mars makefiles
    dmars_smake   Digital Mars makefiles for SMAKE
    gnu           GNU toolchain makefiles (Unix)
    mingw         MinGW makefiles (mingw32-make)
    msevc4prj     MS eMbedded Visual C++ 4 project files
    msvc          MS Visual C++ nmake makefiles
    msvc6prj      MS Visual C++ 6.0 project files
    msvs2003prj   MS Visual Studio 2003 project files
    msvs2005prj   MS Visual Studio 2005 project files
    symbian       Symbian development files
    watcom        OpenWatcom makefiles
    xcode2        Xcode 2.4 project files

Я обычно использую опцию autoconf , и она пишет для меня надоедливые сценарии автоинструментов GNU. Мне пришлось адаптировать скрипт configure.ac, чтобы программа configure обнаружила определенную библиотеку в любой системе. Но это было не так уж плохо. Получить сценарии autoconf таким способом приятно, потому что мне не нужно писать их все самому, и когда я распространяю свой проект, все будет выглядеть так, как будто я их написал, и пользователи все равно смогут построить мой проект в God- заданный путь, с

./configure && make && make install
...