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

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

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

Простое создание всех файлов, требуемых Autotools, если проект мал, но если исходный код разделен во многих каталогах, с несколькими сторонними библиотеками и многими зависимостями, вы попадаете в "Autotools Hell"..

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Я думаю, вы можете считать его полной заменой make и autotools. Он основан на python. Одна вещь, которая мне нравится в waf, заключается в том, что сам waf script составляет ~ 100 КБ автономно, что вы помещаете в корневой каталог проекта. Это в отличие от make или rake и друзей, где сначала должна быть установлена ​​система сборки. У вас должен быть установлен python >= 2.3.

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

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

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

Ответ 5

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

Ответ 6

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

Выводы: SCons слишком медленный... Побеждает побег.

Ответ 7

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

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

Ответ 8

У меня есть SCons на большом проекте С++ (как на Linux, так и на Windows), и он работает очень хорошо.

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

Ответ 9

Я использую 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 script, так что configure находит определенную библиотеку в любой системе. Но это было не так уж плохо. Получение сценариев autoconf таким образом является приятным, потому что мне не нужно писать их самостоятельно, и когда я распространю свой проект, он будет выглядеть так, как если бы я их написал, а пользователи все равно могут создать мой проект в божественном стиле, учитывая, что

./configure && make && make install