Портативная система сборки C++ [закрывается]

Я ищу пользу и легкий в обслуживании портативная система сборки для проектов C++. Основные платформы должны включать Windows (Visual Studio 8 +) и Linux (gcc); Cygwin может быть преимуществом. Мы рассматриваем две основных возможности: CMake и Повышение. Затор. SCons может быть также опцией, но я еще не исследовал его. CMake и Повышение. Затор, кажется, имеет следующие черты:

CMake:

  • (+) генерирует собственный "make-файл" (решение для Windows, проект для Eclipse)
  • (+) расширения для тестирования и упаковки
  • (-) требует конфигурационный файл в каждой папке проекта
  • (-) на основе небольшого слишком подробного специфического языка

Повышение. Затор:

  • сборки отдельно без промежуточных шагов
  • (-) не генерирует собственные решения/проекты
  • (+) краткий язык, подобный классическому make-файлу
  • (+) интуитивная поддержка свойств как многопоточность и статическая/динамичная библиотека

Каковы другие возможности и что действительно предпочтительно после опыта? Какие системы сборки могут создать решение на пути?

28
задан Ilia Barahovski 28 July 2010 в 04:28
поделиться

2 ответа

(-) требует наличия файла конфигурации в каждой папке проекта

Это неверно, вам просто нужно передать более крупные пути, например:

add_program(foo src/foo.cpp src/main.cpp)

Несколько замечаний по поводу Boost. Jam - во-первых, это не Boost.Jam - bjam сам по себе совершенно бесполезен, вы ищете Boost.Build, который представляет собой набор макросов Jam, которые делают bjam полезным.

Я работал с обоими, и должен признать, Boost.Build не подходит для каких-либо серьезных проектов, кроме самого Boost. Нужно найти библиотеку? Не можете найти заголовок? Не могу. Необходимо сделать что-то помимо простой сборки - и вы не представляете, как это сделать, поскольку документация BB ... Совершенно бесполезна и, возможно, покрывает 10% BB. Поэтому в большинстве случаев вам нужно задавать вопросы в списках рассылки BB и ...

Итак, если у вас есть сложный проект - и вам нужно сделать что-то большее, чем простая компиляция и компоновка, держитесь подальше от Boost.Build.

Итак, если вам нужна поддержка MSVC, я считаю, что сегодня CMake является единственно возможным выбором.

Я не говорю, что CMake - очень хорошая система, у нее много проблем, но это что-то в основном подходит для кроссплатформенной разработки (если вам нужна поддержка MSVC).

И если вас не волнует MSVC, и вы довольны MinGW ... взгляните также на автоинструменты.

Насчет Scons - это еще менее зрелый им CMake.

15
ответ дан 28 November 2019 в 03:28
поделиться

У меня был хороший опыт работы с premake4: http://industriousone.com/premake

Update

Мне все еще нравится premake, но, поработав с ним некоторое время, я чувствую себя обязанным перечислить некоторые недостатки, которые я обнаружил в нем:

  • Интеграция новых инструментальных средств (т.е. инструментов предварительной обработки, таких как bison или moc) не поддерживается.
  • Нет поддержки пофайловой конфигурации.
  • Поиск в библиотеках негибкий, нет поддержки скриптов или проверки версий.
  • Некоторые директивы (например, конфигурация) влияют на следующие операторы, но нет явного ограничения области действия. Это может привести к незаметным ошибкам.
  • Небольшая поддержка отладки конфигурации, другими словами, демонстрация того, как интерпретируется конфигурация, кроме проверки сгенерированных сценариев сборки или их выполнения.
  • По крайней мере, для Makefile-файлов gmake нет возможности сделать пути абсолютными. Это не очень хорошо работает с быстрым исправлением Vim, хотя это легко обойти.
  • Медленные темпы развития. Новые функции могут разрабатываться лет .
9
ответ дан 28 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: