- Настройка проекта Linux на основе MSBuild C++ в Visual Studio
- Общие параметры
- Настройки удаленной системы
- Копирование источников (только для удаленных систем)
- События сборки
- IntelliSense для заголовков в удаленных системах
- Языковой стандарт целевого объекта Linux
- Download, install, and set up the Linux workload
- Visual Studio setup
- Options for creating a Linux environment
- Linux setup: Ubuntu on WSL
- Ubuntu on remote Linux systems
- Fedora on WSL
- Fedora on remote Linux systems
- Next Steps
Настройка проекта Linux на основе MSBuild C++ в Visual Studio
Поддержка Linux реализована в Visual Studio версии 2017 и выше.
В этой статье показано, как настроить проект Linux на основе MSBuild, который описан в статье Создание проекта Linux на основе MSBuild C++ в Visual Studio. Сведения о проектах Linux CMake см. в разделе Создание и настройка проекта Linux CMake.
Вы можете настроить проект Linux для физического компьютера или виртуальной машины Linux, а также для подсистемы Windows для Linux (WSL).
Visual Studio 2019 версии 16.1
Если в качестве целевой платформы используется WSL, можно избежать операций копирования, необходимых для сборки и получения компонентов IntelliSense для целевой удаленной системы Linux.
Можно указать отдельные целевые объекты Linux для сборки и отладки.
Общие параметры
Чтобы просмотреть параметры настройки, выберите Проект > Свойства или щелкните правой кнопкой мыши проект в обозревателе решений и выберите Свойства в контекстном меню. Появятся параметры Общие.
По умолчанию создается исполняемый файл (с расширением .out). Чтобы создать статическую или динамическую библиотеку либо использовать существующий файл Makefile, используйте параметр Тип конфигурации.
Если вы выполняете сборку для подсистемы Windows для Linux (WSL) версии 1, количество параллельных процессов компиляции будет ограничено 64. Это ограничение контролируется параметром Максимальное количество параллельных заданий компиляции в разделе Свойства конфигурации > C/C++ > Общие.
Независимо от версии WSL, если планируется использовать более 64 параллельных процессов компиляции, рекомендуется выполнять сборку с помощью Ninja, что в большинстве случаев будет быстрее и надежнее. Чтобы выполнить сборку с помощью Ninja, используйте параметр Включить инкрементное построение в разделе Свойства конфигурации > Общие.
См. подробнее о параметрах на страницах свойств в справочнике по страницам свойств проекта Linux.
Настройки удаленной системы
Изменить параметры для удаленного компьютера Linux можно в окне Общие.
Чтобы указать целевой удаленный компьютер Linux, используйте запись Компьютер удаленной сборки. Это позволит выбрать одно из подключений, созданных ранее. Чтобы создать новую запись, см. раздел Подключение к удаленному компьютеру Linux.
Visual Studio 2019 версии 16.7. Чтобы выбрать подсистему Windows для Linux (WSL), задайте в раскрывающемся списке Набор инструментов платформы значение GCC для подсистемы Windows для Linux. Другие параметры удаленного взаимодействия исчезнут. Вместо них отобразится путь к оболочке WSL по умолчанию:
Если у вас есть параллельные установки WSL, можно указать другой путь. См. подробнее об управлении и настройке и администрировании подсистемы Windows для разных дистрибутивов Linux.
Вы можете указать другой целевой объект для отладки на странице Свойства конфигурации > Отладка.
Параметр Корневой каталог удаленной сборки определяет корневой каталог, где выполняется сборка проекта на удаленном компьютере Linux. По умолчанию это
/projects, пока не будет изменено.
Каталог проекта удаленной сборки — это место, где будет выполняться сборка этого конкретного проекта на удаленном компьютере Linux. По умолчанию это каталог $(RemoteRootDir)/$(ProjectName) , который будет развернут в каталог с именем текущего проекта в корневом каталоге, заданном выше.
Изменить компиляторы C и C++ или компоновщик и архиватор, которые используются для сборки проекта по умолчанию, можно в соответствующих записях в разделе C/C++ > Общие и разделе Компоновщик > Общие. Например, можно указать определенную версию GCC и Clang. Дополнительные сведения см. в статьях Свойства C/C++ (Linux C++) и Свойства компоновщика (Linux C++).
Копирование источников (только для удаленных систем)
При использовании WSL этот раздел можно пропустить.
Во время сборки в удаленных системах исходные файлы на компьютере разработки копируются на компьютер Linux и компилируются там. По умолчанию все источники в проекте Visual Studio копируются в расположения, заданные в параметрах выше. Однако можно также добавить в список дополнительные источники или полностью отключить копирование источников, что используется по умолчанию для проекта Makefile.
Параметр Источники для копирования определяет, какие источники копируются на удаленный компьютер. По умолчанию @(SourcesToCopyRemotely) применяется ко всем файлам исходного кода в проекте, за исключением файлов ресурсов (например, изображений).
Копирование источников можно включать и отключать, чтобы разрешать или запрещать копирование исходных файлов на удаленный компьютер.
Параметр Дополнительные источники для копирования позволяет добавлять дополнительные исходные файлы, которые будут скопированы в удаленную систему. Вы можете задать список файлов, разделенных точкой с запятой, или использовать синтаксис : = , чтобы указать локальное и удаленное имя:
События сборки
Так как вся компиляция происходит на удаленном компьютере (или в WSL), в раздел «События сборки» свойства проекта добавляются некоторые дополнительные события сборки. Это удаленное событие перед сборкой, удаленное событие перед компоновкой и удаленное событие после сборки, которые будут возникать на удаленном компьютере перед или после отдельных этапов процесса.
IntelliSense для заголовков в удаленных системах
При добавлении нового подключения в диспетчере подключений Visual Studio автоматически обнаруживает каталоги включения (include) для компилятора на удаленной системе. Затем Visual Studio архивирует с помощью zip и копирует эти файлы в каталог на локальном компьютере Windows. После этого при каждом использовании данного соединения в проекте Visual Studio или CMake заголовки в этих каталогах используются для обеспечения поддержки технологии IntelliSense.
В Visual Studio 2019 версии 16.5 и более поздних удаленное копирование заголовков было оптимизировано. Заголовки теперь копируются по запросу при открытии проекта Linux или настройке CMake для целевого объекта Linux. Копирование выполняется в фоновом режиме для каждого проекта на основе указанных в проекте компиляторов. Дополнительные сведения см. в статье Улучшения точности и производительности IntelliSense в Linux.
Для использования этой возможности необходимо, чтобы на компьютере Linux был установлен zip. Для установки zip можно использовать следующую команду пакетного менеджера apt-get:
Для управления кэшем заголовка перейдите в меню Сервис > Параметры, кроссплатформенный > Диспетчер соединений > Диспетчер удаленных заголовков IntelliSense. Для обновления кэша заголовка после внесения изменений на компьютере Linux выберите удаленное подключение и нажмите Обновить. Нажмите Удалить, чтобы удалить заголовки, не удаляя само подключение. Выберите Проводник, чтобы открыть локальный каталог, в проводнике. К этой папке необходимо относиться как к папке только для чтения. Чтобы скачать заголовки для существующего подключения, созданного в Visual Studio 2017 до версии 15.3, выберите подключение и щелкните Скачать.
«Диспетчер подключений» > «Диспетчер удаленных заголовков IntelliSense»» data-linktype=»relative-path»>
«Диспетчер подключений»» data-linktype=»relative-path»>
Вы можете включить ведение журнала для устранения проблем:
Языковой стандарт целевого объекта Linux
Языковые параметры Visual Studio не распространяются на целевые объекты Linux, так как Visual Studio не управляет установленными пакетами и не настраивает их. Сообщения, отображаемые в окне Вывод, например ошибки сборки, отображаются с использованием языка и языкового стандарта целевого объекта Linux. Вам потребуется настроить целевые объекты Linux для требуемого языкового стандарта.
Источник
Download, install, and set up the Linux workload
Linux projects are supported in Visual Studio 2017 and later. To see the documentation for these versions, set the Visual Studio Version selector control for this article to Visual Studio 2017 or Visual Studio 2019. It’s found at the top of the table of contents on this page.
You can use the Visual Studio IDE on Windows to create, edit, and debug C++ projects that execute on a remote Linux system, virtual machine, or the Windows Subsystem for Linux.
You can work on your existing code base that uses CMake without having to convert it to a Visual Studio project. If your code base is cross-platform, you can target both Windows and Linux from within Visual Studio. For example, you can edit, build, and debug your code on Windows using Visual Studio. Then, quickly retarget the project for Linux to build and debug in a Linux environment. Linux header files are automatically copied to your local machine. Visual Studio uses them to provide full IntelliSense support (Statement Completion, Go to Definition, and so on).
For any of these scenarios, the Linux development with C++ workload is required.
Visual Studio setup
Type «Visual Studio Installer» in the Windows search box:
Look for the installer under the Apps results and double-click it. When the installer opens, choose Modify, and then click on the Workloads tab. Scroll down to Other toolsets and select the Linux development with C++ workload.
If you’re targeting IoT or embedded platforms, go to the Installation details pane on the right. Under Linux development with C++, expand Optional Components, and choose the components you need. CMake support for Linux is selected by default.
Click Modify to continue with the installation.
Options for creating a Linux environment
If you don’t already have a Linux machine, you can create a Linux Virtual Machine on Azure. For more information, see Quickstart: Create a Linux virtual machine in the Azure portal.
On Windows 10 and later, you can install and target your favorite Linux distro on the Windows Subsystem for Linux (WSL). For more information, see Windows Subsystem for Linux Installation Guide for Windows 10. If you’re unable to access the Windows Store, you can manually download the WSL distro packages. WSL is a convenient console environment, but it’s not recommended for graphical applications.
Linux projects in Visual Studio require the following dependencies to be installed on your remote Linux system or WSL:
- A compiler — Visual Studio 2019 has full support for GCC and Clang.
- gdb — Visual Studio automatically launches gdb on the Linux system, and uses the front end of the Visual Studio debugger to provide a full-fidelity debugging experience on Linux.
- rsync and zip — the inclusion of rsync and zip allows Visual Studio to extract header files from your Linux system to the Windows filesystem for use by IntelliSense.
- make
- openssh-server (remote Linux systems only) — Visual Studio connects to remote Linux systems over a secure SSH connection.
- CMake (CMake projects only) — You can install Microsoft’s statically linked CMake binaries for Linux.
- ninja-build (CMake projects only) — Ninja is the default generator for Linux and WSL configurations in Visual Studio 2019 version 16.6 or later.
The following commands assume you’re using g++ instead of clang.
Linux projects in Visual Studio require the following dependencies to be installed on your remote Linux system or WSL:
- gcc — Visual Studio 2017 has full support for GCC.
- gdb — Visual Studio automatically launches gdb on the Linux system and uses the front end of the Visual Studio debugger to provide a full-fidelity debugging experience on Linux.
- rsync and zip — the inclusion of rsync and zip allows Visual Studio to extract header files from your Linux system to the Windows filesystem to use for IntelliSense.
- make
- openssh-server — Visual Studio connects to remote Linux systems over a secure SSH connection.
- CMake (CMake projects only) — You can install Microsoft’s statically linked CMake binaries for Linux.
Linux setup: Ubuntu on WSL
When you’re targeting WSL, there’s no need to add a remote connection or configure SSH to build and debug. zip and rsync are required for automatic syncing of Linux headers with Visual Studio for Intellisense support. ninja-build is only required for CMake projects. If the required applications aren’t already present, you can install them using this command:
Ubuntu on remote Linux systems
The target Linux system must have openssh-server, g++, gdb, and make installed. ninja-build is required for CMake projects only. The ssh daemon must be running. zip and rsync are required for automatic syncing of remote headers with your local machine for Intellisense support. If these applications aren’t already present, you can install them as follows:
At a shell prompt on your Linux computer, run:
You may be prompted for your root password to run the sudo command. If so, enter it and continue. Once complete, the required services and tools are installed.
Ensure the ssh service is running on your Linux computer by running:
This command starts the service and runs it in the background, ready to accept connections.
Fedora on WSL
Fedora uses the dnf package installer. To download g++, gdb, make, rsync, ninja-build, and zip, run:
zip and rsync are required for automatic syncing of Linux headers with Visual Studio for Intellisense support. ninja-build is only required for CMake projects.
Fedora on remote Linux systems
The target machine running Fedora uses the dnf package installer. To download openssh-server, g++, gdb, make, ninja-build, rsync, and zip, and restart the ssh daemon, follow these instructions. ninja-build is only required for CMake projects.
At a shell prompt on your Linux computer, run:
You may be prompted for your root password to run the sudo command. If so, enter it and continue. Once complete, the required services and tools are installed.
Ensure the ssh service is running on your Linux computer by running:
This command starts the service and runs it in the background, ready to accept connections.
Next Steps
You’re now ready to create or open a Linux project and configure it to run on the target system. For more information, see:
Источник