- Visual C++ for Linux Development with CMake
- Getting Started
- Configuring CMake Settings for Linux
- Building a supported CMake release from source
- Current Limitations
- What’s next
- Настройка проекта Linux CMake в Visual Studio
- Добавление конфигурации Linux
- Выбор целевого объекта Linux
- Использование подсистемы Windows для Linux
- IntelliSense
- Настройка языкового стандарта
- Дополнительные параметры
- Создание проекта CMake для Linux в Visual Studio
- Перед началом
- Создание нового проекта CMake в Linux
- Открытие папки проекта CMake
Visual C++ for Linux Development with CMake
August 25th, 2017
In Visual Studio 2017 15.4 you can now target Linux from your CMake projects. This enables you to work on your existing code base that uses CMake as your build solution without having to convert it to a VS project. If your code base is cross-platform you can target both Windows and Linux from within Visual Studio.
This post will give an overview of the CMake support for Linux in Visual Studio. You can go here to learn more about CMake in Visual Studio generally.
Update 10/24/2017: 15.4.1 is in the Release channel now and addresses the setup issue previously noted here. 15.5 is in the Preview channel and removes the limitation on CMake 3.9, there CMake >= 3.8 can be used.
Getting Started
To enable this capability, make sure that you choose the Linux C++ Workload in the Visual Studio installer. The CMake support for Linux is selected by default for this workload. The CMake support in Visual Studio requires the server mode support that was introduced in CMake 3.8. See these instructions for building CMake from source if your package manager provides an older version.
To get started, create a simple CMakeLists.txt file in the same folder as a cpp file as in the example below. (via File > Open > Folder… or devenv.exe ).
As soon as you open this folder, Visual Studio will parse the CMakeLists.txt. By default, a Windows target of x86-Debug will be used. To target Linux, change the project settings to Linux-Debug or Linux-Release. When you do this, your source will be copied to your Linux machine where CMake will be run to generate the CMake cache for your project.
By default, the first remote system in the list under Tools > Options > Cross Platform > Connection Manager will be used. If you have not created any remote connections, you will be prompted to create one the first time you select a Linux target in your project settings.
To debug your code on the remote system, set a breakpoint, select the CMake target as the startup item in the toolbar menu next to the project setting, and click run (or press F5).
Configuring CMake Settings for Linux
To change the defaults that are used use the menu CMake > Change CMake Settings > CMakeLists.txt, or use the context menu by right clicking CMakeSettings.txt and choosing Change CMake Settings. This will create a new file in your folder called CMakeSettings.json. Initially this will be populated with the default configurations that are listed in the project settings menu item. Here is an example configuration for Linux-Debug based on the example above.
The name on line 2 can be of your choosing to identify your custom configuration. If you have more than one remote system defined, you can enter it in place of the default on line 4. IntelliSense is enabled for this field from your system to help you select the right system. The field remoteCMakeListsRoot on line 6 is where your project sources will be copied to on the remote system, by default under /var/tmp. The field remoteBuildRoot on line 9 is where the build output will be generated on your remote system, that output is also copied locally in the location specified by buildRoot on line 8.
Building a supported CMake release from source
The minimum version of CMake required on your Linux machine is 3.8, and it must also support server mode. To verify this run
To verify that server mode is enabled run
In the output look for “serverMode”:true. Note that even if compiling from source as described below you should check the capabilities when done. Your Linux system may have limitations that prevent server mode from being enabled. As one example we have run into issues with enabling server mode on Ubuntu 14.04 because of library and compiler limitations.
To get started building from source in the shell for your Linux system make sure your package manager is up to date, you have git and cmake available, then clone the CMake sources.
Now, make sure you are on a supported release of CMake for Visual Studio. We are actively tracking CMake development, but we cannot guarantee we support the latest.
15.4.1 is in the Release channel and supports up to 3.9.0 which you can ensure you build by running.
15.5 is in the Preview channel and removes the limitation on CMake 3.9, there CMake >= 3.8 can be used. You should be able to use the current release there.
Now to build and install a supported version, run the following commands.
The above will build and install the current release of CMake to /usr/local/bin. Verify the version is >= 3.8 and that server mode is enabled.
Current Limitations
These are some known limitations that we are actively working on.
The Linux console window that enables input and output with a remote Linux application is not enabled for CMake yet. This is a limitation that this window currently only works for gdbserver mode, but our CMake support for Linux only works with gdb mode. This will be addressed in a future release.
What’s next
Download the Visual Studio 2017 Preview, install the Linux C++ Workload, and try our CMake support for Linux with your code. Let us know how it is or isn’t working for you. Your feedback matters.
Источник
Настройка проекта Linux CMake в Visual Studio
Поддержка Linux реализована в Visual Studio версии 2017 и выше. Чтобы увидеть документацию для этих версий, установите в расположенном над содержанием раскрывающемся списке Версия пункт Visual Studio 2017 или Visual Studio 2019.
В этой статье описывается добавление конфигурации Linux в проекте CMake, предназначенном как для удаленной системы Linux, так и для подсистемы Windows для Linux (WSL). Это продолжение серии, которая началась со статьи Создание и настройка проекта Linux CMake. Если используется MSBuild, ознакомьтесь со статьей Настройка проекта Linux.
Добавление конфигурации Linux
Конфигурацию можно использовать для различных платформ (Windows, WSL, удаленных систем) с одним и тем же исходным кодом. Конфигурация также используется для установки компиляторов, передачи переменных среды и настройки способа вызова CMake. В файле CMakeSettings.json задаются некоторые или все свойства, перечисленные в статье Настройка параметров сборки CMake, а также дополнительные свойства, определяющие параметры сборки на удаленном компьютере Linux.
Чтобы изменить параметры CMake по умолчанию в Visual Studio 2017, в главном меню последовательно выберите CMake > Изменить параметры CMake > CMakeLists.txt. Или же щелкните правой кнопкой мыши файл CMakeLists.txt в Обозревателе решений и выберите пункт Изменить параметры CMake. Затем Visual Studio создает новый файл CMakeSettings.json в корневой папке проекта. Чтобы внести изменения, откройте файл и измените его напрямую. Дополнительные сведения см. в статье Настраиваемые параметры CMake.
Конфигурация по умолчанию для Linux-Debug в Visual Studio 2017 (а также для Visual Studio 2019 версии 16.0) выглядит следующим образом:
Чтобы изменить параметры CMake по умолчанию в Visual Studio 2019, в главной панели инструментов откройте раскрывающийся список Конфигурация и выберите Управление конфигурациями.
Откроется Редактор параметров CMake, в котором можно изменить файл CMakeSettings.json в корневой папке проекта. Вы также можете открыть файл в помощью редактора JSON, нажав кнопку Изменить JSON в редакторе. Дополнительные сведения см. в статье Настраиваемые параметры CMake.
Конфигурация Linux-Debug по умолчанию в Visual Studio 2019 версии 16.1 и более поздних версиях представлена ниже:
В Visual Studio 2019 версии 16.6 или выше Ninja является генератором по умолчанию для конфигураций, предназначенных для удаленных систем или WSL, в отличие от файлов makefile в Unix. Дополнительные сведения см. в публикации блога команды разработчиков C++.
Дополнительные сведения об этих параметрах см. в разделе документации по CMakeSettings.json.
При выполнении сборки:
- Если целевая система предназначена для удаленной системы, Visual Studio по умолчанию выбирает первую удаленную систему в списке в разделе Инструменты >Параметры >Кроссплатформенные >Диспетчер подключений для целевых объектов.
- Если ни одно удаленное подключение не будет найдено, вам будет предложено создать его. В этом разделе предполагается, что вы прочитали статью Подключение к удаленному компьютеру Linux.
Выбор целевого объекта Linux
Когда вы открываете папку проекта CMake, Visual Studio выполняет синтаксический анализ файла CMakeLists.txt и задает целевой объект Windows x86-Debug. Чтобы использовать удаленную систему Linux, измените параметры проекта в соответствии с используемым компилятором Linux. Например, если вы используете GCC в Linux и выполняете компиляцию с отладочной информацией, выберите следующее: Linux-GCC-Debug или Linux-GCC-Release.
После выбора целевого удаленного объекта Linux ваш источник будет скопирован в удаленную систему.
Когда вы выберете целевой объект, CMake автоматически выполнится в системе Linux, чтобы создать кэш CMake для проекта:
Использование подсистемы Windows для Linux
Если вы намерены использовать подсистему Windows для Linux (WSL), вам не нужно добавлять удаленное подключение.
Чтобы настроить использование подсистемы WSL, выберите Управление конфигурациями в раскрывающемся меню конфигураций на главной панели инструментов:
Откроется окно CMakeSettings.json.
Щелкните Добавить конфигурацию (зеленая кнопка «+») и выберите Linux-GCC-Debug или Linux-GCC-Release, если вы используете GCC. Если используется набор инструментов Clang/LLVM, выберите один из вариантов Clang. Нажмите Выбрать и нажмите клавиши CTRL+S, чтобы сохранить конфигурацию.
Visual Studio 2019 версии 16.1. Если вы планируете использовать WSL, Visual Studio не требуется копировать исходные файлы и поддерживать две синхронные копии вашего дерева сборки, так как компилятор в Linux имеет прямой доступ к исходным файлам в подключенной файловой системе Windows.
IntelliSense
Для правильной работы C++ IntelliSense требуется доступ к заголовкам C++, на которые ссылаются исходные файлы C++. Visual Studio автоматически использует заголовки, на которые ссылается проект CMake из Linux в Windows, чтобы обеспечить полную функциональность технологии IntelliSense. Подробнее см. в разделе IntelliSense для удаленных заголовков.
Настройка языкового стандарта
Языковые параметры Visual Studio не распространяются на целевые объекты Linux, так как Visual Studio не управляет установленными пакетами и не настраивает их. Сообщения, отображаемые в окне Вывод, например ошибки сборки, отображаются с использованием языка и языкового стандарта целевого объекта Linux. Вам потребуется настроить целевые объекты Linux для требуемого языкового стандарта.
Дополнительные параметры
Используйте следующие параметры, чтобы выполнять команды в системе Linux до и после сборки, а также до создания CMake. Они могут быть любой командой, допустимой на удаленной системе. Выходные данные передаются обратно в Visual Studio.
Источник
Создание проекта CMake для Linux в Visual Studio
Поддержка Linux реализована в Visual Studio версии 2017 и выше. Чтобы увидеть документацию для этих версий, установите в расположенном над содержанием раскрывающемся списке Версия пункт Visual Studio 2017 или Visual Studio 2019.
Рекомендуется использовать CMake для проектов, которые являются кроссплатформенными или будут создаваться с открытым кодом. Проекты CMake можно использовать для сборки и отладки одного и того же исходного кода в Windows, подсистеме Windows для Linux (WSL) и удаленных системах.
Перед началом
Сначала убедитесь, что вы установили рабочую нагрузку Visual Studio для Linux, включая компонент CMake. Она является рабочей нагрузкой Разработка для Linux на C++ в Visual Studio Installer. Если вы не уверены в том, что она установлена, см. статью Загрузка, установка и настройка рабочей нагрузки Linux.
Также убедитесь, что на удаленном компьютере установлены следующие компоненты:
- gcc
- gdb
- rsync
- zip
- ninja-build (Visual Studio 2019 или более поздней версии)
Для поддержки CMake в Visual Studio требуется поддержка режима сервера, введенная в CMake 3.8. Для версии CMake от Майкрософт скачайте последние готовые двоичные файлы по адресу https://github.com/Microsoft/CMake/releases.
Двоичные файлы устанавливаются в каталог
/.vs/cmake . После развертывания двоичных файлов автоматически выполняется повторное создание проекта. Если файл CMake, указанный в поле cmakeExecutable в CMakeSettings.json, является недопустимым (файл не существует или версия файла не поддерживается), то при наличии предварительно созданных двоичных файлов Visual Studio игнорирует поле cmakeExecutable и использует эти предварительно созданные двоичные файлы.
Visual Studio 2017 не может создать проект CMake с нуля, но можно открыть папку, содержащую имеющийся проект CMake, как описано в следующем разделе.
Visual Studio 2019 можно использовать для сборки и отладки в удаленной системе Linux или WSL, и в этой системе будет вызываться CMake. На целевом компьютере должен быть установлен Cmake версии 3.14 или более поздней.
Убедитесь, что на целевом компьютере установлена последняя версия CMake. Часто в дистрибутиве версия, которую предлагает диспетчер пакетов по умолчанию, не является актуальной и не поддерживает все функции, необходимые для работы с Visual Studio. Visual Studio 2019 определяет, установлена ли последняя версия CMake в системе Linux. Если такая версия не найдена, Visual Studio отображает информационную панель в верхней части области редактора. В ней предлагается установить CMake из https://github.com/Microsoft/CMake/releases.
С помощью Visual Studio 2019 можно создать проект CMake с нуля или открыть имеющийся. Чтобы создать проект CMake, следуйте приведенным ниже инструкциям. Или перейдите к разделу Открытие папки проекта CMake, если у вас уже есть проект CMake.
Создание нового проекта CMake в Linux
Чтобы создать проект Linux CMake в Visual Studio 2019, сделайте следующее:
- Выберите Файл > Создать проект в меню Visual Studio или нажмите клавиши Ctrl + Shift + N.
- Задайте для параметра Язык значение C++ и выполните поиск по строке CMake. Теперь щелкните Далее. Укажите имя и расположение, а затем щелкните Создать.
Кроме того, можно открыть собственный проект CMake в Visual Studio 2019. Подробные сведения см. в следующем разделе.
Visual Studio создает минимальный файл CMakeLists.txt, в котором содержится только имя исполняемого файла и минимальная требуемая версия CMake. При необходимости вы можете вручную изменить этот файл. Visual Studio никогда не переопределяет пользовательские изменения.
Чтобы получить представление об изменении и создании сценариев CMake в Visual Studio 2019, ознакомьтесь со следующими материалами:
Открытие папки проекта CMake
Когда вы открываете папку, содержащую существующий проект CMake, Visual Studio автоматически настраивает IntelliSense и сборки, используя переменные в кэше CMake. Локальные параметры конфигурации и отладки хранятся в файлах JSON. При желании вы можете предоставить доступ к этим файлам другим пользователям Visual Studio.
Visual Studio не изменяет файлы CMakeLists.txt. Это позволяет вашим коллегам, работающим над тем же проектом, продолжать использовать имеющиеся инструменты. После того как вы сохраните изменения в файле CMakeLists.txt и (в некоторых случаях) в файле CMakeSettings.json, Visual Studio повторно создает кэш. Если вы используете конфигурацию Существующий кэш, то Visual Studio не изменяет содержимое кэша.
Общие сведения о поддержке CMake в Visual Studio см. в статье о проектах CMake в Visual Studio. Прочитайте статью, прежде чем продолжить чтение этого раздела.
Источник