Какие-нибудь хорошие инструменты сборки для проекта C++, которые могут заменить make?

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

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

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


person lurks    schedule 10.09.2008    source источник


Ответы (9)


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

person amrox    schedule 10.09.2008
comment
Мы обнаружили, что SCons неприемлемо медленны для больших решений Visual Studio. Он очень хорошо работает в UNIX-системах. - person Kristopher Johnson; 11.09.2008
comment
@Kristopher: Можешь уточнить? Я не обнаружил, чтобы это имело место в моем опыте. Где вы создаете файлы scons из файлов devstudio? - person grieve; 08.11.2008
comment
Во-вторых, SCons работает очень-очень медленно, когда дело доходит до больших сборок. - person jkp; 19.02.2009
comment
Интересно, как скрипт компоновщика может замедлить сборку C++. Разве большая часть времени не будет потрачена на компиляцию всех этих шаблонов? - person quant_dev; 06.07.2009

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

Недавно я также видел всплывающее окно "SCons". Хотя сам ничего с ним не создавал.

person Nick    schedule 10.09.2008
comment
Он не заменяет make, но CMake очень хорошо заменяет Autotools. - person jturcotte; 09.02.2009

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

Думаю можно рассматривать как полноценную замену make и autotools. Он основан на питоне. Что мне нравится в waf, так это то, что сам waf-скрипт занимает около 100 КБ автономного файла, который вы размещаете в корневом каталоге вашего проекта. Это отличается от make or rake and friends, где система сборки должна быть установлена ​​в первую очередь. Однако у вас должен быть установлен python >= 2.3.

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

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

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

person wilhelmtell    schedule 11.09.2008
comment
Scons также поставляет версию без установки... весом 5,5 КБ... - person paxos1977; 29.10.2008
comment
SCons также работает очень медленно. Я использую его уже год или больше и хочу как можно скорее перейти на Waf. - person jkp; 19.02.2009
comment
Мы пробовали SCons и в итоге использовали waf. Это не требует установки, требуется только Python, а скрипты сборки меньше/проще. - person riviera; 22.03.2011

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

person Johan Boulé    schedule 12.01.2009

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

person Greg Whitfield    schedule 10.09.2008
comment
Мы перенесли джем из make-файлов шесть или семь лет назад. Потребовалось некоторое время, чтобы все наладилось, но как только первоначальная работа была сделана, с тех пор все было гладко. Создание новых проектов почти тривиально. - person Graeme Perrow; 10.02.2009

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

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

person Anthony Cramp    schedule 07.10.2008
comment
Эта статья 2005 года, поэтому она довольно устарела. - person JesperE; 10.02.2009
comment
Истинный. Однако есть более новый тест SCons, который был проведен в конце прошлого года. Только что обновил битую ссылку. - person Anthony Cramp; 12.02.2009
comment
Первая ссылка кажется мертвой. - person shuttle87; 31.05.2015
comment
Исправлена ​​неработающая ссылка, однако примите ее с долей скептицизма, учитывая ее возраст. В эти дни я использую CMake. - person Anthony Cramp; 25.06.2015


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

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

person Kristian    schedule 09.02.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 autotools. Мне пришлось адаптировать скрипт configure.ac, чтобы configure находил определенную библиотеку в любой системе. Но это было не так уж плохо. Получение скриптов autoconf таким образом приятно, потому что мне не нужно писать их все самому, и когда я распространяю свой проект, он будет выглядеть так, как будто я их написал, и пользователи все еще могут создавать мой проект в бого- уступил дорогу, с

./configure && make && make install
person Frank    schedule 10.02.2009
comment
Похоже, этот проект больше не поддерживается? - person sivabudh; 16.11.2010