Visual Studio 2012 — Как разработать кроссплатформенный проект C ++?

Я новичок в C ++ и начинаю разрабатывать свой первый кроссплатформенный проект C ++. Мне нужно использовать вызовы для конкретной платформы (Win32 и POSIX), поэтому мне нужно часто компилировать как в Windows, так и в Linux.

До сих пор я использую одноплатформенные проекты KDevelop в Linux и Visual Studio 2012 в Windows.

Как я могу использовать две разные IDE в двух разных операционных системах с одним и тем же проектом?

  1. Должен ли я использовать одну кроссплатформенную IDE?
  2. Должен ли я изучить CMake (или аналогичный) и настроить его для работы с обеими IDE?
  3. Могу ли я разместить свой код в Интернете и автоматически синхронизировать его с автономными проектами?
  4. Альтернативы?

Спасибо всем заранее.

РЕДАКТИРОВАТЬ:

Просто для пояснения, проект станет простым сервером для учебного протокола. Будет клиент, запрашивающий загрузку / получение некоторых файлов на / с сервера.
С схоластический Я имею в виду, что, например, я должен использовать потоки pthreads / win32 вместо библиотеки потоков C ++ более высокого уровня.

4

Решение

  1. Возможно — действительно зависит от того, что вы чувствуете себя наиболее комфортно с. Поскольку проект не графический, все, что дает IDE, — это редактирование файлов и компиляция. Таким образом, вы можете собрать проект на одной машине с IDE, а затем переместить исходные тексты на другую машину для компиляции.

  2. Лично у меня было бы два make-файла, один для Linux и один для Widnows. Делает жизнь довольно простой [у вас может быть «внешний» make-файл, который выбирает правильный, основанный на каком-то умном методе].

  3. Да, вы должны найти систему контроля версий, которая работает как для Windows, так и для Linux (git, mercurial, subversion, bazaar и некоторые другие). Таким образом, у вас есть не только центральный репозиторий [вы можете использовать любой из ваших компьютеров в качестве «сервера» для любого из них], но он также позволяет вам отслеживать ваши изменения. Определенно стоит сделать!

  4. Есть сотни разных альтернатив. Но чем проще вы держите его и чем менее сложны ваши инструменты, тем больше времени вы тратите на собственное программирование проекта, а не, например, выясняете, почему CMake строит не так, как вы этого хотите.

Кроме того, убедитесь, что вы выделяете весь системный код для одного файла для каждой архитектуры. Таким образом, позже будет легко портировать на другую архитектуру, и это сделает МОСТ вашего кода компилируемым в обеих системах.

4

Другие решения

  1. Как правило, легко настроить специфичные для IDE файлы проекта / сборки для добавления / перемещения / удаления исходных файлов. Поэтому использование кроссплатформенной IDE не так важно.
  2. Вы можете сделать это, я думаю, что CMake также может создавать файлы проекта для некоторых IDE, которые затем могут быть использованы для сборки проекта.
  3. Гм, если вы хотите разместить его в Интернете или нет, это ваш выбор. Что вам определенно следует сделать, так это использовать какой-нибудь контроль версий. Система отслеживания ошибок также полезна. Если вы все равно хотите открыть код с открытым исходным кодом, одно из существующих средств хостинга — это однозначно да.
  4. На самом деле, нет.

Один комментарий: у вас будет гораздо больше проблем с переносимостью кода C ++. Сборка поверх инструментария, такого как Qt, является огромной помощью. Если вы хотите остаться ближе к стандарту C ++, хотя бы подумайте об использовании Boost для таких вещей, как потоки, интеллектуальные указатели, доступ к файловой системе. Удачи!

2

Мой недавний опыт подсказывает взглянуть на Qt. IDE (QtCreator) очень хорош и доступен на всех основных платформах.

Я использовал для довольно простого проекта, который использует довольно сложные компоненты, такие как OpenCV и ZBar. Я занимаюсь разработкой под Linux, копирую исходный код в Windows и перекомпилирую.

У меня были некоторые проблемы с настройкой OpenCV на обеих платформах, поэтому я не могу сказать, что это очень просто, но это работает. Поскольку вы уже знаете KDevelop, вы уже должны знать Qt.

Я также придаю большое значение недавней тенденции, когда Qt5 рассматривается как платформа для Ubuntu на смартфонах. Я действительно надеюсь увидеть это развитие.

НТН

1

Как я могу использовать две разные IDE в двух разных операционных системах с одним и тем же проектом?

Должен ли я использовать одну кроссплатформенную IDE?

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

Для этого CMake и PreMake, похоже, являются двумя лучшими инструментами для достижения этой цели.

Существуют десятки альтернатив (например, SCons, Cook, kbuild, Jam и Boost Jam и многие другие), но поскольку CMake и PreMake генерируют файлы проекта и сценарии сборки, они могут быть лучшими решениями.

Ваш пробег будет меняться.

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

Вы должны иметь надежный источник контроля, который работает везде, где вы делаете. Git и Mercurial, кажется, работают лучше всего, если вы используете какой-то «облачный» хостинг, такой как Github или BitBucket, но они ни в коем случае не требуют этого. В зависимости от рабочей среды и размера команды вы можете предпочесть Subversion или PerForce или что-то еще, но это зависит от вас и вашей команды.

1
  1. это поможет, вам, скорее всего, потребуется отладка на многих платформах … Вспомнились Qt Creator, Netbeans и Eclipse.

  2. Да. cmake или qmake для Qt может быть

  3. Не технический вопрос. Просто используйте контроль версий! github и gitorious — легкий выбор для проекта с открытым исходным кодом.

  4. Qt — это простой выбор для кроссплатформенного приложения на C ++ с графическим интерфейсом, а также хороший выбор для сетевого приложения без графического интерфейса.

0
По вопросам рекламы [email protected]