Учебник. Создание кроссплатформенных проектов C++ в Visual Studio
Разработка Visual Studio C и C++ теперь подходит не только для Windows. В этом руководстве показано, как использовать Visual Studio для C++ межплатформенной разработки в Windows и Linux. Он основан на CMake, поэтому вам не нужно создавать или генерировать проекты Visual Studio. При открытии папки с файлом CMakeLists.txt Visual Studio настраивает IntelliSense и параметры сборки автоматически. Вы можете быстро приступить к редактированию, сборке и отладке кода локально в Windows. Затем можно переключить конфигурацию для того, чтобы сделать то же самое в Linux, в Visual Studio.
В этом руководстве вы узнаете, как:
Клонировать проект CMake с открытым кодом с сайта GitHub.
Открывать проект в Visual Studio.
Собирать и отлаживать исполняемый целевой объект на Windows.
Добавлять подключение к компьютеру Linux.
Собирать и отлаживать тот же целевой объект в Linux.
Предварительные требования
Настройка Visual Studio для кроссплатформенной разработки на C++
Сначала установите Visual Studio и выберите Разработка классических приложений на C++ и Разработка для Linux на C++ . Для минимальной установки требуется всего 3 ГБ свободного места на диске. В зависимости от скорости загрузки установка не должна занять более 10 минут.
sudo apt install -y openssh-server build-essential gdb rsync make zip
Клонирование проекта CMake с открытым кодом с сайта GitHub
В этом руководстве используется пакет SDK Bullet Physics на сайте GitHub. Он обеспечивает обнаружение столкновений и физическое моделирование для многих приложений. Пакет SDK включает примеры исполняемых программ, которые компилируются и запускаются без дополнительного кода. В этом учебнике не изменяются исходный код или скрипты сборки. Для начала клонируйте репозиторий bullet3 из GitHub на компьютер, где установлена среда Visual Studio.
В меню main Visual Studio выберите Файл > Открыть > CMake. Перейдите к файлу CMakeLists. txt в корне только что скачанного репозитория bullet3.
Переключение на представление целевых объектов
Когда вы откроете папку, которая использует CMake, Visual Studio автоматически создаст кэш CMake. Эта операция может занять некоторое время в зависимости от размера проекта.
В окне вывода выберите Показать выходные данные из и выберите CMake для отслеживания состояния процесса создания кэша. По завершении операции отображается надпись: «Извлечение сведений о целевом объекте выполнено». После завершения этой операции будет настроена технология IntelliSense. Можно выполнить сборку проекта и отладить приложение. В Visual Studio теперь отображается логическое представление решения, основанное на целевых объектах, заданных в файлах CMakeLists.
Нажмите кнопку Решения и папки в обозревателе решений, чтобы переключиться на представление целевых объектов CMake. Вот как это представление выглядит для пакета SDK Bullet: Представление целевых объектов обеспечивает более интуитивное отображение содержимого исходной базы. Вы увидите, что некоторые целевые объекты являются библиотеками, а другие — исполняемыми файлами.
Разверните узел в представлении целевых объектов CMake, чтобы просмотреть его файлы исходного кода, где бы эти файлы ни находились на диске.
Добавление явной конфигурации Windows x64-Debug
Visual Studio создает конфигурацию x64-Debug по умолчанию для Windows. Конфигурации указывают Visual Studio, какую платформу она будет использовать для CMake. Конфигурация по умолчанию не представлена на диске. При явном добавлении конфигурации Visual Studio создает файл с именем CMakeSettings.json. Он заполняется параметрами для всех указанных конфигураций.
Добавьте новую конфигурацию. На панели инструментов откройте раскрывающийся список Конфигурация и выберите Управление конфигурациями. Откроется редактор параметров CMake. Щелкните зеленый значок плюса в левой части редактора, чтобы добавить новую конфигурацию. Откроется диалоговое окно Добавление конфигурации в CMakeSettings. В этом диалоговом окне представлены все конфигурации, которые входят в состав Visual Studio, а также все созданные вами настраиваемые конфигурации. Если вы хотите продолжать использовать конфигурацию x64-Debug, добавьте ее в первую очередь. Выберите x64-Debug, а затем нажмите кнопку Выбрать. Visual Studio создает файл CMakeSettings.json с конфигурацией для x64-Debug и сохраняет ее на диске. Вы можете назвать конфигурацию как угодно, изменив параметр имени непосредственно в CMakeSettings.json.
Установка точки останова, сборка и запуск в Windows
На этом шаге нам предстоит отладить пример программы, демонстрирующий библиотеку Bullet Physics.
В обозревателе решений выберите AppBasicExampleGui и разверните его.
Откройте файл BasicExample.cpp .
Задайте точку останова, которая будет выполняться при щелчке кнопки в работающем приложении. Событие щелчка обрабатывается в методе внутри вспомогательного класса. Для быстрого перехода:
Выберите CommonRigidBodyBase , из которого происходит структура BasicExample , около строки 30.
Щелкните правой кнопкой мыши и выберите Перейти к определению. Вы находитесь в заголовке CommonRigidBodyBase.h.
В представлении браузера выше вы увидите, что находитесь в CommonRigidBodyBase . Справа можно выбрать элементы для проверки. Щелкните раскрывающийся список и выберите mouseButtonCallback , чтобы перейти к определению функции в заголовке.
Поместите точку останова на первой строке в этой функции. Она будет выполняться при нажатии кнопки мыши в окне приложения при запуске в отладчике Visual Studio.
Чтобы запустить приложение, выберите на панели инструментов раскрывающийся список запуска. Это зеленый значок воспроизведения с текстом «Выбрать элемент запуска». В раскрывающемся списке выберите AppBasicExampleGui.exe. Имя исполняемого файла теперь отображается на кнопке запуска:
Нажмите кнопку запуска, чтобы выполнить сборку приложения и необходимых зависимостей, а затем запустите его с подключенным отладчиком Visual Studio. Через некоторое время появится работающее приложение:
Переместите указатель мыши в окно приложения, а затем нажмите кнопку для вызова точки останова. Точка останова снова выведет Visual Studio на передний план, а в редакторе отобразится строка, где выполнение приостановлено. Можно проверить переменные, объекты, потоки и память приложения, а также пошагово выполнить код. Выберите Продолжить, чтобы позволить приложению возобновить работу, и закройте его в обычном режиме. Или остановите выполнение в Visual Studio с помощью кнопки «Остановить».
Добавление конфигурации Linux и подключение к удаленному компьютеру
Добавьте конфигурацию Linux. Щелкните правой кнопкой мыши файл CMakeSettings.json в обозревателе решений и выберите Добавить конфигурацию. Вы увидите то же диалоговое окно «Добавление конфигурации в CMakeSettings», что и раньше. На этот раз выберите Linux-Debug, а затем сохраните файл CMakeSettings.json (CTRL+S).
Visual Studio 2019 версии 16.6 или более поздней версии: прокрутите вниз в редакторе параметров CMake и выберите Показать дополнительные параметры. В качестве генератора CMake выберите Unix Makefiles, а затем сохраните файл CMakeSettings.json (CTRL+S).
В раскрывающемся списке конфигураций выберите Linux-Debug. Если это первое подключение к системе Linux, откроется диалоговое окно Подключение к удаленной системе. Если вы уже добавили удаленное подключение, вы можете открыть это окно, перейдя в раздел Сервис > Параметры > Кроссплатформенные > диспетчер подключений.
Укажите сведения о подключении к компьютеру Linux и нажмите Подключить. Visual Studio добавляет этот компьютер в CMakeSettings.json как подключение по умолчанию для Linux-Debug. Он также извлекает заголовки из удаленного компьютера, чтобы вы могли получить IntelliSense специально для этого удаленного подключения. Затем Visual Studio отправляет файлы на удаленный компьютер и создает кэш CMake в удаленной системе. Эти действия могут занять некоторое время в зависимости от скорости сети и мощности удаленного компьютера. Вы узнаете, что операция завершена, когда в окне вывода CMake появится сообщение: «Извлечение сведений о целевом объекте выполнено».
Установка точки останова, сборка и запуск в Linux
Так как это классическое приложение, необходимо предоставить некоторые дополнительные сведения о конфигурации для конфигурации отладки.
В представлении целевых объектов CMake щелкните правой кнопкой мыши AppBasicExampleGui и выберите Параметры отладки и запуска, чтобы открыть файл launch.vs.json, который находится в скрытой вложенной папке .vs. Этот локальный файл для среды разработки. Вы можете переместить его в корень проекта, если хотите проверить его и сохранить для своей команды. В этот файл была добавлена конфигурация для AppBasicExampleGui. Эти параметры по умолчанию работают в большинстве случаев, но не здесь. Поскольку это классическое приложение, необходимо предоставить некоторые дополнительные сведения, чтобы запустить программу и увидеть ее на компьютере Linux.
Чтобы найти значение переменной среды DISPLAY на компьютере Linux, выполните следующую команду:
В конфигурации для AppBasicExampleGui существует массив параметров «pipeArgs». В нем есть строка «$«. Это команда, которая запускает gdb на удаленном компьютере. Visual Studio необходимо экспортировать соответствующие элементы в этот контекст перед выполнением этой команды. Например, если значение экрана — :1 , измените эту строку следующим образом:
Запустите приложение и выполните его отладку. На панели инструментов откройте раскрывающийся список Выбрать элемент запуска и выберите AppBasicExampleGui. Затем либо выберите зеленый значок воспроизведения на панели инструментов, либо нажмите клавишу F5. Приложение и его зависимости будут собраны на удаленном компьютере Linux. После чего приложение будет запущено с подключенным отладчиком Visual Studio. На удаленном компьютере Linux вы увидите окно приложения.
Переместите указатель мыши в окно приложения, а затем нажмите кнопку. Сработает точка останова. Выполнение программы приостанавливается, Visual Studio возвращается на передний план, вы увидите точку останова. Кроме того, вы увидите окно консоли Linux в Visual Studio. В этом окне предоставлены выходные данные с удаленного компьютера Linux, а также оно может принимать входные данные для stdin . Как и любое окно Visual Studio, вы можете закрепить его в предпочтительном месте. Его расположение сохраняется в будущих сеансах.
Вы можете проверить переменные, объекты, потоки и память приложения и пошагово выполнить код с помощью Visual Studio. Но на этот раз вы выполняете все это на удаленном компьютере Linux вместо локальной среды Windows. Выберите Продолжить, чтобы приложение возобновило работу, выйдите из него обычным образом или нажмите кнопку остановки, как и при локальном выполнении.
Посмотрите на окно стека вызовов и увидите вызовы к x11OpenGLWindow , поскольку среда Visual Studio запустила приложение в Linux.
Чему вы научились
В этом руководстве вы клонировали базу кода непосредственно из GitHub. Вы создали, запустили и отладили его в Windows без изменений. Затем вы использовали эту же самую базу кода, с незначительными изменениями конфигурации, для сборки, запуска и отладки на удаленном компьютере Linux.
Следующие шаги
Дополнительные сведения о настройке и отладке проектов CMake в Visual Studio: