Советы / ресурсы для крупномасштабных кроссплатформенных программных проектов - PullRequest
6 голосов
/ 15 ноября 2010

Я собираюсь начать крупномасштабный программный проект, включающий кроссплатформенный графический интерфейс и тяжелые вычисления.Я планирую написать большую часть серверной части приложения на C ++ и CUDA, а также GUI в Qt4.Я планирую использовать Make в качестве моей системы сборки.Это будет проект, в котором будет только два разработчика, и, возможно, в конечном итоге он станет проектом с открытым исходным кодом, когда я сравнительно далеко уйду от него.

Мой главный вопрос: есть ли у кого-нибудь какие-либо советы / ресурсы для разработки?архитектура программного обеспечения.

  • Что было бы хорошим способом структурировать ваши файлы?(код сжатия номера в отдельной папке, чем код gui, который отделен от скомпилированных исполняемых файлов, или что-то еще?)
  • Как будет работать система сборки для кроссплатформенного программного обеспечения?Нужно ли мне устанавливать разные системы сборки для каждой платформы или я могу создать общий «make-файл», который будет собираться по-разному, в зависимости от того, какая платформа его вызывает?
  • Какие виды изменений мне нужно будет сделатьв мой код, чтобы убедиться, что он будет правильно работать на всех платформах (директивы препроцессора и т. д.)?
  • Как кто-то обрабатывает контроль версий для больших проектов и интегрирует его в систему сборки, чтобы я получал версию.Revision.Build числа, которые обновляются с каждым разом, когда я строю свой проект?

Я был разочарован тем фактом, что мой колледж, который я собираюсь окончить, почти не покрывает ничего из этого.На данный момент я провел много поисков в Google, и мне не повезло, что мне нужно.Я не прошу, чтобы все кормили ложкой, я был бы совершенно доволен ссылками на книги или веб-сайты, связанные с этим.

Большинство этих вещей я делал отдельно, но никогда не пыталсяобъедините все в один большой пакет.

Кто-нибудь порекомендует Release It !: Разработка и развертывание готового к использованию программного обеспечения , о котором я спрашиваю?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

1) Структура может быть такой же, но если вы включаете файлы в подкаталоги, убедитесь, что вы используете '/, а не \. Первый также будет работать на Windows.

2) Я бы проверил cmake (http://www.cmake.org/) для управления сборкой на нескольких платформах. Это отнимет у вас много боли.

3) Используйте STL и Boost столько, сколько сможете. Эти библиотеки были разработаны с учетом этой проблемы. Это покроет огромную часть того, что вам может понадобиться. Вы уже выбрали отличную библиотеку Qt, поэтому ваш графический интерфейс также не является проблемой. Вместе с этими тремя вы уже прошли большую часть пути. Тем не менее, вам, возможно, придется сделать что-то, что не зависит от платформы и не охватывается ни одним из них. Для этого я предлагаю вам написать класс, который предоставляет согласованный интерфейс для всех платформ, и скрыть тщательность директив препроцессора в исходном файле. Крайне важно предоставить согласованный интерфейс.

4) Используйте SVN. Я не знаю, как это сделать на других компиляторах, но в Visual Studio тривиально получить последнюю версию и вставить ее в какой-то файл, который затем включается в ваш проект. Вы можете использовать события сборки, чтобы сделать это. Извините, я не могу подробно остановиться на других платформах.

Кроме того, если вам нужно выходить за пределы STL, Boost, Qt и так далее, помните о документации вызовов API на всех платформах. В прошлом я был укушен поведением fseek() вызова API, который записывал байты для разметки к месту назначения в одной реализации, но не в другой. Это может быть основной причиной головной боли и еще одной причиной, чтобы попытаться придерживаться проверенных и проверенных библиотек, как упомянуто выше.

0 голосов
/ 18 ноября 2010

Qt будет соответствовать вашим требованиям, IMO .. Я отвечу с соответствием Qt.

Что касается структуры файлов, вы можете иметь исходные файлы *.cpp и *.h в папке, остальные библиотеки и зависимости в другой папке. Вы можете создавать *.ui файлы, используя Qt designer, или вы можете также напрямую их кодировать. (, в котором последний значительно увеличит время компиляции ) Сгенерированные файлы (например, *.exe, *.obj и т. Д.) Можно поместить в отдельную папку, чтобы ваша файловая система выглядела последовательны. Есть простые способы сделать все сказанное выше в Qt. Проверьте QMake здесь ..

Что касается переносимости, вы можете легко переносить приложения Qt на различные платформы. Проверьте здесь ..

Что касается контроля источников, я привык к SVN, и мы в порядке. Просто выберите тот, который соответствует вашим потребностям.

Поскольку вы собираетесь получить высшее образование, Qt имеет некоторые преимущества по сравнению с другими.

  1. По ссылкам, которые я вам предоставил, Вы могли бы понять, что документация для Qt обширна и вы можете работать над этим без особого профессиональная поддержка.
  2. А также самое главное, что Qt находится в LGPL , и вы можете играть бесплатно ...:)

НТН ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...