Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Разработка Visual Studio C и C++ больше не только для Windows. В этом руководстве показано, как использовать кроссплатформенную разработку Visual Studio для C++ в Windows и Linux. Он основан на CMake, поэтому вам не нужно создавать или генерировать проекты Visual Studio. При открытии папки, содержащей файл CMakeLists.txt, Visual Studio автоматически настраивает параметры IntelliSense и сборки. Вы можете быстро начать редактирование, сборку и отладку кода локально в Windows. Из Visual Studio переключите конфигурацию, чтобы делать то же самое на Linux.
В этом руководстве описано, как:
- клонирование проекта CMake с открытым кодом из GitHub
- открытие проекта в Visual Studio
- сборка и отладка целевого объекта исполняемого файла в Windows
- добавление подключения к компьютеру Linux
- сборка и отладка того же целевого объекта в Linux
Предпосылки
Настройка Visual Studio для кроссплатформенной разработки C++
- Сначала установите Visual Studio и выберите разработку приложений для рабочего стола с использованием C++ и разработку для Linux с использованием наборов рабочих нагрузок для C++. Эта минимальная установка составляет всего 3 ГБ. В зависимости от скорости загрузки установка не должна занять более 10 минут.
Настройка компьютера Linux для кроссплатформенной разработки C++
Visual Studio не требует какого-либо конкретного дистрибутива Linux. ОС может работать на физическом компьютере, на виртуальной машине или в облаке. Можно также использовать подсистему Windows для Linux (WSL). Однако для этого руководства требуется графическая среда. WSL здесь не рекомендуется, так как он предназначен в первую очередь для операций командной строки.
Visual Studio требует наличия на компьютере с Linux следующих инструментов: компиляторов C++,
gdb
,ssh
,rsync
,make
иzip
. В системах на основе Debian эту команду можно использовать для установки следующих зависимостей:sudo apt install -y openssh-server build-essential gdb rsync make zip
Для Visual Studio требуется последняя версия CMake на компьютере Linux с включенным режимом сервера (по крайней мере 3.8). Корпорация Майкрософт создает универсальную сборку CMake, которую можно установить на любом дистрибутиве Linux. Мы рекомендуем использовать эту сборку, чтобы убедиться, что у вас есть последние функции. Вы можете получить двоичные файлы CMake из ответвления Microsoft репозитория CMake на GitHub. Перейдите на страницу и скачайте версию, соответствующую системной архитектуре на компьютере Linux, а затем помечайте ее как исполняемый файл:
wget <path to binary> chmod +x cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh
Вы можете просмотреть параметры запуска скрипта с помощью
--help
. Мы рекомендуем указать-prefix
установку в пути /usr , так как /usr/bin — это расположение по умолчанию, в котором Visual Studio ищет CMake. В следующем примере показан скрипт Linux-x86_64. Измените его по мере необходимости, если вы используете другую целевую платформу.sudo ./cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh --skip-license --prefix=/usr
Git для Windows, установленный на вашем компьютере с Windows.
Учетная запись GitHub.
Клонирование проекта CMake с открытым кодом из GitHub
В этом руководстве используется Bullet Physics SDK на GitHub. Она обеспечивает обнаружение конфликтов и моделирование физики для многих приложений. Пакет SDK включает примеры исполняемых программ, которые компилируют и выполняются без необходимости писать другой код. В этом руководстве не изменяются ни один исходный код или скрипты сборки. Чтобы начать, клонируйте репозиторий bullet3 из GitHub на компьютере, где установлена программа Visual Studio.
git clone https://github.com/bulletphysics/bullet3.git
В главном меню Visual Studio выберите "Открыть > файл > CMake". Перейдите к файлу
CMakeLists.txt
в корневом каталоге репозитория bullet3, который вы скачали.После открытия папки структура папок становится видимой в обозревателе решений.
В этом представлении отображается именно то, что расположено на диске, а не логическое или отфильтрованное представление. По умолчанию он не отображает скрытые файлы.
Нажмите кнопку "Показать все файлы" , чтобы просмотреть все файлы в папке.
Переключение на представление целевых объектов
При открытии папки, которая использует CMake, Visual Studio автоматически создает кэш CMake. Эта операция может занять несколько минут в зависимости от размера проекта.
В окне вывода выберите "Показать выходные данные" и выберите CMake , чтобы отслеживать состояние процесса создания кэша. Когда операция завершится, она говорит:"Целевое извлечение сведений выполнено".
После завершения этой операции настройка IntelliSense. Проект можно создать и отладить приложение. Visual Studio теперь отображает логическое представление решения на основе целевых объектов, указанных в файлах CMakeLists.
Нажмите кнопку "Решения и папки " в обозревателе решений , чтобы перейти на представление целевых объектов CMake.
Вот как выглядит это представление для пакета SDK для маркеров:
Представление целевых объектов обеспечивает более интуитивно понятное представление о том, что находится в этой исходной базе. Некоторые целевые объекты — это библиотеки, а другие — исполняемые файлы.
Разверните узел в представлении целевых объектов 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 и выберите "Показать дополнительные параметры". Выберите Unix Makefiles в качестве генератора CMake, а затем сохраните файл CMakeSettings.json (CTRL+s).
Выберите Linux-Debug в раскрывающемся списке конфигурации.
Если вы впервые подключаетесь к системе Linux, откроется диалоговое окно "Подключение к удаленной системе ".
В диалоговом окне есть поля для имени узла, порта, имени пользователя, типа проверки подлинности и пароля. Все поля пусты, кроме порта, имеют значение 22, а для типа проверки подлинности задан пароль.
Если вы уже добавили удаленное подключение, вы можете открыть это окно, перейдя к Инструменты > Параметры > Межплатформенный > Менеджер подключений.
Укажите сведения о подключении к компьютеру Linux и нажмите кнопку "Подключить". Visual Studio добавляет этот компьютер как CMakeSettings.json в качестве подключения по умолчанию для Linux-Debug. Он также загружает заголовки с вашего удаленного компьютера, поэтому вы получите IntelliSense, специфичный для этого удаленного подключения. Затем Visual Studio отправляет файлы на удаленный компьютер и создает кэш CMake в удаленной системе. Эти действия могут занять некоторое время в зависимости от скорости сети и мощности удаленного компьютера. Вы поймете, что процесс завершен, когда в окне вывода CMake появится сообщение "Извлечение информации из цели завершено".
Установка точки останова, сборка и запуск в Linux
Так как это классическое приложение, необходимо предоставить дополнительные сведения о конфигурации отладки.
В представлении "Целевые объекты CMake" щелкните правой кнопкой мыши AppBasicExampleGui и выберите "Параметры отладки и запуска ", чтобы открыть файл launch.vs.json, который находится в скрытой вложенной папке .vs . Этот файл является локальным для среды разработки. Вы можете переместить его в корневой каталог вашего проекта, если хотите зафиксировать изменения и сохранить вместе с командой. В этом файле добавлена конфигурация для AppBasicExampleGui. Эти параметры по умолчанию работают в большинстве случаев, но не здесь. Так как это классическое приложение, вам необходимо предоставить дополнительную информацию для запуска программы, чтобы ее можно было увидеть на компьютере Linux.
Чтобы найти значение переменной
DISPLAY
среды на компьютере Linux, выполните следующую команду:echo $DISPLAY
В конфигурации AppBasicExampleGui есть массив параметров pipeArgs. Он содержит строку "${debuggerCommand}". Это команда, которая запускает
gdb
на удаленном компьютере. Visual Studio должен экспортировать отображение в этот контекст перед выполнением этой команды. Например, если значение отображения имеет значение:1
, измените следующую строку:"export DISPLAY=:1;${debuggerCommand}",
Запуск и отладка приложения. Откройте раскрывающийся список "Выбор элемента запуска " на панели инструментов и выберите AppBasicExampleGui. Затем выберите зеленый значок воспроизведения на панели инструментов или нажмите клавишу F5. Приложение и его зависимости создаются на удаленном компьютере Linux, а затем запускаются с подключенным отладчиком Visual Studio. На удаленном компьютере Linux появится окно приложения.
Переместите мышь в окно приложения и нажмите кнопку. Точка останова достигнута. Выполнение программы приостанавливается, Visual Studio возвращается на передний план и отображается точка останова. Вы также увидите окно консоли Linux в Visual Studio. Окно предоставляет выходные данные с удаленного компьютера Linux, а также может принимать входные данные.
stdin
Как и любое окно Visual Studio, вы можете закрепить его, где вы предпочитаете видеть его. Его позиция сохраняется в последующих сеансах.Выходные данные в окне указывают на то, что функции C11 динамически загружены с помощью dlopen/dlsym, контекст GL 3.0 создан, и контекст прямой отрисовки GLX получен и сделан текущим. Окно содержит различные сведения о версии для GL_VENDOR, GL_VERSION, GL_SHADING_LANGUAGE_VERSION и т. д.
Вы можете проверить переменные приложения, объекты, потоки, память и выполнить пошаговое выполнение кода в интерактивном режиме с помощью Visual Studio. Но на этот раз вы делаете все это на удаленном компьютере Linux вместо локальной среды Windows. Вы можете нажать кнопку "Продолжить ", чтобы разрешить приложению возобновить работу и выйти обычно или выбрать кнопку остановки, как и при локальном выполнении.
Просмотрите окно стека вызовов и изучите вызовы
x11OpenGLWindow
с момента, как Visual Studio запустила приложение на Linux.Стек вызовов показывает точку останова в CommonRigidBodyBase::mouseMoveCallback, а также вызовы, которые предшествуют ему, такие как OnMouseMove, X11OpenGLWindow::pumpMessage и т. д.
Полученные навыки
В этом руководстве вы клонировали базу кода непосредственно из GitHub. Вы создали, запустили и отладили его в Windows без изменений. Затем вы использовали ту же базу кода с незначительными изменениями конфигурации для сборки, запуска и отладки на удаленном компьютере Linux.
Дальнейшие действия
Дополнительные сведения о настройке и отладке проектов CMake в Visual Studio:
Проекты CMake в Visual Studio
Настройка проекта Linux CMake
Подключение к удаленному компьютеру Linux
Настройка параметров сборки CMake
Настройка сеансов отладки CMake
Развертывание, запуск и отладка проекта Linux
Справочник по предопределенной конфигурации CMakevcpkg в проектах CMakeустановить и использовать пакеты с помощью CMake в Visual Studio