Я работаю с мультиплатформенным проектом на C ++ с использованием Visual Studio 2010, часть кода есть на всех платформах, но есть большая часть, посвященная каждой, я разделяю их с помощью #if def, но получается из-за того, что обслуживание кода становится очень сложным, и код загроможден, в дополнение к таким проблемам, как код не компилируется, некоторые определения включены или выключены.
Есть ли какой-нибудь плагин или инструмент для Visual Studio, который помогает в разработке многоплатформенных проектов, например, скрывает код, связанный с платформой, или компилирует, используя различные включенные / выключенные #defines, проверяет типы данных и т. Д.
Буду признателен, если у кого-нибудь будет предложение
Я не знаю о таком плагине для VS, но так как это в основном IDE только для Windows, я сомневаюсь, что они есть. (Но конечно я могу ошибаться)
Если вы ищете хорошую кроссплатформенную систему сборки, я бы CMake. Он мощный, его легко подобрать и он может генерировать файлы сборки практически для любой популярной IDE / цепочки инструментов (решения Visual Studio, проекты Eclipse, файлы сборки MinGW, файлы сборки GNU и т. Д.).
Это делает кроссплатформенную разработку крупных проектов на одном дыхании!
Вероятно, вы могли бы устранить большую часть кода, зависящего от платформы, если переключитесь на платформу Qt. Вы можете продолжать использовать VS с надстройкой Qt, а с помощью абстракций платформы Qt вы можете использовать несколько разных платформ с (почти) идентичной кодовой базой. Вы получаете непревзойденную поддержку и переносимость платформы:
API также лучше IMO — менее уродливый и неловкий, более последовательный. Кроме того, QML (разметка в стиле JSON для создания приложений из компонентов C ++ с использованием JS для связывания кода и привязок значений) может значительно повысить вашу производительность (до 10 раз без преувеличения). Набор инструментов Qt поддерживает различные наборы (комбинация компиляторов версий библиотек и платформ) и многоплатформенную кросс-компиляцию.
Нет «Инструмента» больше, чем сама визуальная студия. Разделяйте код по разным проектам; Проект для общего кода и проект для каждой платформы.
Не забудьте:
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.