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

StackOverflow https://stackoverflow.com/questions/54674

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

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

Я тоже видел"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.Я видел несколько крупных компаний, использующих его.Таким образом, он готов к работе на предприятиях, хотя веб-сайт выглядит довольно устаревшим.

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

Я использую 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top