Есть ли хорошие инструменты для разработки проекта на C++, которые могут заменить make?
-
09-06-2019 - |
Вопрос
Мне интересно, есть ли какой-нибудь хороший и удобный инструмент, который заменит GNU Autotools или Make для создания очень большого проекта на C++, которые так сложны в использовании.
Если проект небольшой, сгенерировать все файлы, необходимые для Autotools, несложно, но если исходный код разделен на множество каталогов, с множеством сторонних библиотек и множеством зависимостей, вы попадаете в «ад Autotools».
спасибо за любые рекомендации
Решение
А JavaScript-движок Google V8 написан на C++ и использует SCons, так что я думаю, это один голос за это.
Другие советы
Взгляни на ваф.
Думаю, его можно рассматривать как полноценную замену make и autotools.Он основан на питоне.Что мне нравится в waf, так это то, что сам waf-скрипт представляет собой автономный файл размером ~100 КБ, который вы размещаете в корневом каталоге вашего проекта.В отличие от make или rake and friends, где сначала необходимо установить систему сборки.Однако вам необходимо установить Python >= 2.3.
~$ ./waf configure && ./waf && ./waf install
Эквивалентом Makefiles в Waf является файл wscript.Это скрипт Python, который читает waf, и он определяет как минимум 3 функции: set_options()
, configure(conf)
и build(bld)
.Вы можете догадаться, что делает каждый из них.
Для начала я рекомендую просмотреть файлы demos/cpp/* в исходном дистрибутиве.Также взгляните на документ/waf.pdf файл;это 12-страничный документ, который поможет вам быстро приступить к работе.
Для сравнения скорости различных инструментов сборки C++ вы можете взглянуть на этот тест:http://retropaganda.info/~bohan/devel/wonderbuild/benchmarks/time.xml
Мы используем Jam для сложного проекта на C++. Одним из преимуществ является то, что он хорошо кроссплатформен.Вместо того, чтобы рассказывать о преимуществах, просто взгляните на эту ссылку:http://www.perforce.com/jam/jam.html
Ноэль Ллопис написал несколько статей, сравнивающих системы сборки.Часть 1 книги «В поисках идеальной системы сборки» находится по адресу http://gamesfromwithin.com/the-quest-for-the-perfect-build-system.Часть 2 следует на том же сайте.О повторной попытке Scons сообщается по адресу http://gamesfromwithin.com/?p=104.
Выводы:SCons слишком медленный...Джем – победитель.
Cook — еще один инструмент, который можно использовать для замены make.Я видел несколько крупных компаний, использующих его.Таким образом, он готов к работе на предприятиях, хотя веб-сайт выглядит довольно устаревшим.
Я использую SCons в большом проекте на C++ (как в Linux, так и в Windows), и он работает очень хорошо.
scons all -j8
(который параллельно компилирует объектные файлы) — это очень круто!
я использую запекаемый файл для моего процесса сборки, и я стал его большим поклонником!
Мне больше никогда не придется самому писать 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
Я обычно использую автоконфигурация вариант, и он пишет для меня надоедливые сценарии GNU autotools.мне пришлось адаптировать configure.ac
скрипт, чтобы configure нашел определенную библиотеку в любой системе.Но это было не так уж плохо.Получение сценариев autoconf таким образом удобно, потому что мне не нужно писать их все самому, и когда я распространяю свой проект, он будет выглядеть так, как будто я их написал, и пользователи все равно смогут создавать мой проект в боже- уступили дорогу, с
./configure && make && make install