2013-03-19 2 views
1

Я работаю с многоплатформенным проектом C++ с использованием visual studio 2010, между всеми платформами имеется общая часть кода, но есть большая часть, которая посвящена каждому, я их разделяю используя #if def, но оказывается, что обслуживание кода становится очень, а код загроможден, в дополнение к таким проблемам, как код не компилируется с некоторыми определениями, включенными или выключенными.Инструменты для многоплатформенных проектов C++

Есть ли какой-либо плагин или инструмент для визуальной студии, который помогает в разработке многоплатформенных проектов, например, спрятать код, связанный с платформой, или скомпилировать с использованием различных #defines, включенных/выключенных, проверить типы данных, .. ect.

Я был бы признателен, если кто-нибудь есть предложение

+0

Использование 'if (kFeatureFoo)' вместо '#if kFeatureFoo' может часто помогать: это означает, что компилятор все еще должен проверить, действительно ли код C++, а удаление выполняется только оптимизатором (исключение кода с недопустимым кодом общая, надежная оптимизация) – MSalters

ответ

1

Существует нет «Инструмент» больше, чем самой визуальной студии. Отделите код на разные проекты; Проект для общего кода и проекта для каждой платформы.

Не забудьте:

1. Add reference to common project in all platform-dependent projects (so common project is compiled before platform project). 
2. Add common project base to the common include directories of each target project. 

enter image description here

3

Я не знаю о такой плагин для VS, но так как это в основном для Windows-только IDE, я сомневаюсь, что они есть. (Но, конечно, я мог ошибаться)

Если вы ищете хорошую кросс-платформенную систему сборки, я бы посмотрел на CMake. Он мощный, легко подбирается и может генерировать файлы сборки практически для любой популярной среды IDE/toolchain (Visual Studio Solutions, Eclipse Projects, MinGW Makefiles, GNU Makefile и т. Д.).

Это делает кросс-платформенную разработку больших проектов ветерок!

+0

ну, вы получите мой upvote для cMake, но на самом деле это не бриз ;-) – Najzero

+0

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

+0

Я также очень рекомендую CMake. Он отлично подходит для нескольких платформ, нескольких ОС и нескольких компиляторов. Я использую его чаще всего с несколькими версиями Visual Studio на 64-битных окнах, однако я также создал свои приложения в Linux с небольшим изменением в файле конфигурации CMake. И да, у CMake есть возможность управлять определениями. – drescherjm

2

Возможно, вы исключили большую часть кода, зависящего от платформы, если вы переключитесь на структуру Qt. Вы можете продолжать использовать VS с надстройкой Qt и используя абстракции платформы Qt, вы можете настроить таргетинг на несколько разных платформ с (почти) идентичной базой кода. Вы получаете непревзойденную поддержку платформ и портативность:

  • Окна
  • Linux (Qt является родным для KDE и будущих версий Ubuntu)
  • MacOS
  • BB10 (Qt является родным для BB10 тоже)
  • Embedded Linux
  • Android (прибывающий в следующем месяце)
  • IOS (в следующем месяце тоже)
  • Joll а
  • Tizen

API-интерфейсы также лучше IMO - менее некрасиво и неудобно, более последовательным. Также QML (разметка стиля JSON для создания приложений из компонентов C++ с использованием JS для кода клея и привязок значений) может значительно повысить вашу производительность (до 10 раз без преувеличения). Инструментальная клавиша Qt поддерживает различные наборы (комбинация компиляторов и платформ библиотек) и многоплатформенную кросс-компиляцию.