SCons или CMake вместо qmake [закрыто]
Мне нужен совет в следующем вопросе:
У меня есть проект QT, который в настоящее время настроен на хорошую работу с qmake. Однако из-за расширения требований и будущих направлений проекта мне необходимо изменить систему его сборки, так как приложение потребует некоторых изменений в том, как оно будет построено.
сейчас каждый исходный файл скомпилирован в довольно большой исполняемый файл, он упакован (вручную) и отправлен в область загрузки. Все штраф.
но направление я с целью, чтобы распределить приложения таким образом, что каждая "фича" будет составлен в Общая библиотека и пользователь (разработчик) сможет выбрать компоненты, которые он хочет компилироваться. Эти "функции"размещаются в каталогах в дереве источника (например: query_builder, reverse_engineer, mysql_DB_support, каталоги version_managemen и т. д...) и когда пользователь создает приложение, он просто говорит системе сборки скомпилировать приложение с построителем запросов и mysql, но без обратного инженера, и в этом случае система сборки добавляет исходные файлы из указанного каталога и создает lib из него.
У меня тоже есть другие требования, такие как:
- сборка windows, сборка linux
- необязательно сборка пакета (deb, rpm)
- поддержка QT и, возможно, QT5
- несколько исполняемых файлов (клиент GUI, клиент CLI)
после некоторых "исследование рынка" я закончил с CMake и SCons в качестве двух возможных систем, которые я мог бы использовать. У меня есть некоторый опыт CMake и некоторый опыт python, но пока нет SCons.
но я не знаю, какой из них лучше для моего случая, здесь мне нужна ваша помощь. Не могли бы Вы уточнить, что мне использовать? И если вы считаете, что мои требования достижимы с qmake, пожалуйста, дайте мне знать, что тоже,
Ура, f.
1 ответов
на этот вопрос нет правильного ответа, и он обычно сводится к личным предпочтениям, вроде vi против emacs (правильный ответ-vi, конечно :)
вы должны изучить плюсы и минусы каждого и оценить, как они соответствуют вашим требованиям и потребностям.
я неравнодушен к SCons, главным образом потому, что я не могу выдержать синтаксис CMake, но это личное предпочтение. Вот некоторые плюсы и минусы каждого, как я вижу это:
CMake
плюсы:
- подобно QMake, учитывая, что это генератор makefile
- CMake это широко используется, так что есть много ссылок и справки
- имеет графический интерфейс (я сам не знаю, на основе комментариев Calvin1602 ниже)
плюсы:
- CMake имеет свой собственный, придуманный синтаксис, который многие чувствуют (сам включено) не интуитивно.
- процесс сборки 2 шага, сначала создайте Makefiles, затем фактически выполните компиляцию
- его почти невозможно прочитать сгенерированные Makefiles
проектов SCons
плюсы:
- синтаксис Python, который широко используется и относительно прост в освоении. (и Python классный:)
- процесс сборки - это один шаг, просто выполните SCons, и он компилируется. Нет промежуточных файлов сборки для создания или обслуживания.
- в прошлом SCons был медленнее, чем CMake, но с тех пор его намного быстрее, вероятно, так же быстро или быстрее, чем CMake, поскольку ему не нужно генерировать файлы Makefile.
- богатый набор функций и многие поддерживаемые языки, в то время как CMake ориентирован на C/C++
- очень точная, неявная система зависимостей: нет необходимости явно перечислять зависимые заголовки, библиотеки и т. д. Явный при необходимости можно указать зависимости.
- доступен плагин eclipse. Eclipse также имеет плагины для Python.
- имеет инструменты, созданные для проектов Qt для обработки MOC и других связанных codegen, как упоминалось здесь.
плюсы:
- SCons может не так широко использоваться, как CMake, но по-прежнему имеется много поддержки.
- в зависимости от размера проекта, SCons может использовать много памяти, так как он анализирует все сценарии сборки и строит дерево зависимостей в памяти перед компиляцией. Однако это позволяет проводить более точную проверку зависимостей.