Поделиться через


Настройка параметров сборки CMake

Visual Studio использует файл конфигурации CMake для управления созданием CMake и его сборкой. CMakePresets.json поддерживается Visual Studio 2019 версии 16.10 или более поздней и является рекомендуемой конфигурацией CMake. CMakePresets.json поддерживается непосредственно CMake и может использоваться для создания И сборки CMake из Visual Studio, из VS Code в конвейере непрерывной интеграции и из командной строки в Windows, Linux и Mac. Дополнительные сведения см CMakePresets.json. в разделе "Настройка и сборка с помощью предустановок CMake".

Если вы поддерживаете проекты, использующие CMakeSettings.json файл для конфигурации сборки CMake, Visual Studio 2019 и более поздних версий предоставляют редактор параметров CMake. Редактор позволяет легко добавлять конфигурации CMake и настраивать их параметры. Он предназначен для более простой альтернативы ручному редактированию CMakeSettings.json файла. Однако если вы предпочитаете редактировать файл напрямую, можно выбрать ссылку "Изменить JSON " в правом верхнем углу редактора.

Чтобы открыть редактор параметров CMake, выберите раскрывающийся список "Конфигурация " на главной панели инструментов и выберите пункт "Управление конфигурациями".

Снимок экрана: раскрывающийся список конфигурации CMake. Выделено управление конфигурациями.

Откроется редактор параметров с установленными конфигурациями слева.

Снимок экрана: редактор параметров CMake.

В левой области показаны установленные конфигурации (x86-Debug). В правой области показаны параметры выбранной конфигурации. К параметрам относятся имя конфигурации, тип конфигурации (для параметра Debug), набор инструментов (задано значение msvc_x86), файл цепочки инструментов CMake (пустой), корень сборки (содержит ${env:USERPROFILE}\CMakeBuilds\${workspaceHash}\build\${name}), аргументы команд CMake (пустые) и аргументы команд сборки (-v).

Visual Studio предоставляет одну конфигурацию x64-Debug по умолчанию. Вы можете добавить дополнительные конфигурации, выбрав зеленый знак плюса. Параметры, отображаемые в редакторе, зависят от выбранной конфигурации.

Параметры, которые вы выбрали в редакторе, записываются в файл с именем CMakeSettings.json. Этот файл предоставляет аргументы командной строки и переменные среды, передаваемые CMake при сборке проектов. Visual Studio никогда не изменяет CMakeLists.txt автоматически. С помощью CMakeSettings.json этого можно настроить сборку с помощью Visual Studio, оставив файлы проектов CMake неоткрытыми, чтобы другие пользователи вашей команды могли использовать их с любыми инструментами, которые они используют.

Общие параметры CMake

Следующие параметры доступны под заголовком Общие:

Имя конфигурации

Соответствует параметру name. Это имя отображается в раскрывающемся списке конфигураций C++. Вы можете использовать макрос ${name} для создания других значений свойств, например путей.

Тип конфигурации

Соответствует параметру configurationType. Определяет тип конфигурации сборки для выбранного генератора. В настоящее время поддерживаются значения Debug, MinSizeRel, Release и RelWithDebInfo. Он сопоставляется CMAKE_BUILD_TYPEс .

Набор инструментов

Соответствует параметру inheritedEnvironments. Определяет среду компилятора, которая используется для сборки выбранной конфигурации. Поддерживаемые значения зависят от типа конфигурации. Чтобы создать настраиваемую среду, выберите ссылку Edit JSON в правом верхнем углу редактора параметров и измените CMakeSettings.json файл напрямую.

Файл цепочки инструментов CMake

Путь к файлу цепочки инструментов CMake. Этот путь передается в CMake как "-DCMAKE_TOOLCHAIN_FILE = <filepath>. Файлы цепочки инструментов указывают расположения компиляторов и служебных программ цепочки инструментов, а также другие целевые платформы и сведения, связанные с компилятором. Если этот параметр не задан, по умолчанию Visual Studio использует файл цепочки инструментов vcpkg.

Корневой путь к сборке

Соответствует buildRoot. Сопоставляется с CMAKE_BINARY_DIRи задает место создания кэша CMake. Если указанная папка не существует, она будет создана.

Аргументы команд

Следующие параметры доступны под заголовком Аргументы команд:

Аргументы команд CMake

Соответствует cmakeCommandArgs. Указывает все больше параметров командной строки, передаваемых в CMake.

Аргументы команд сборки

Соответствует buildCommandArgs. Указывает больше коммутаторов для передачи базовой системе сборки. Например, передача -v при использовании генератора Ninja приводит к тому, что Ninja выдает командные строки.

Аргументы команд CTest

Соответствует ctestCommandArgs. Указывает дополнительные параметры командной строки для передачи в CTest при выполнении тестов.

Общие параметры для удаленных сборок

Для таких конфигураций, как Linux, которые используют удаленные сборки, также доступны следующие параметры:

rsync аргументы команд

Дополнительные параметры командной строки, передаваемые rsyncв средство быстрого и универсального копирования файлов.

Переменные и кэш CMake

Эти параметры позволяют задавать переменные CMake и сохранять их в CMakeSettings.json. Они передаются в CMake во время сборки и переопределяют все значения в CMakeLists.txt файле. Этот раздел можно использовать так же, как вы используете CMakeGUI для просмотра списка всех доступных для изменения переменных CMake. Нажмите кнопку "Сохранить и создать кэш" , чтобы просмотреть список всех переменных CMake, доступных для редактирования, включая расширенные переменные (на CMakeGUI). Вы можете отфильтровать список по имени переменной.

Соответствует variables. Содержит пару "имя-значение" переменных CMake, передаваемых в -D name=value CMake. Если инструкции сборки проекта CMake указывают добавление каких-либо переменных непосредственно в файл кэша CMake, рекомендуется вместо этого добавить их сюда.

Расширенные настройки

Генератор CMake

Соответствует generator. Сопоставляется с коммутатором CMake и указывает используемый генератор CMake-G. Это свойство можно также использовать как макрос ${generator}, чтобы задать другие значения свойств. Сейчас Visual Studio поддерживает следующие генераторы CMake:

  • Ninja
  • "Unix Makefiles"
  • "Visual Studio 16 2019"
  • "Visual Studio 16 2019 Win64"
  • "Visual Studio 16 2019 ARM"
  • Visual Studio 15 2017
  • Visual Studio 15 2017 Win64
  • Visual Studio 15 2017 ARM
  • Visual Studio 14 2015
  • Visual Studio 14 2015 Win64
  • Visual Studio 14 2015 ARM

Так как генератор Ninja предназначен для ускорения сборки в ущерб гибкости и функциональности, он используется по умолчанию. Однако некоторые проекты CMake могут быть не в состоянии правильно построить с помощью Ninja. В этом случае можно указать CMake, что необходимо создать проект Visual Studio.

Режим IntelliSense

Режим, используемый подсистемой IntelliSense. Если режим не выбран, Visual Studio наследует режим из указанного набора инструментов.

Каталог установки

Каталог, в котором CMake устанавливает целевые объекты. Сопоставляется с CMAKE_INSTALL_PREFIX.

Исполняемый файл CMake

Полный путь к исполняемому файлу программы CMake, включая имя файла и расширение. Позволяет использовать настраиваемую версию CMake с Visual Studio. Для удаленных сборок укажите расположение CMake на удаленном компьютере.

Для таких конфигураций, как Linux, которые используют удаленные сборки, также доступны следующие параметры:

Удаленный корневой каталог CMakeLists.txt

Каталог на удаленном компьютере, который содержит корневой CMakeLists.txt файл.

Удаленный корневой каталог установки

Каталог на удаленном компьютере, в который CMake устанавливает целевые объекты. Сопоставляется с CMAKE_INSTALL_PREFIX.

Удаленное копирование источников

Указывает, следует ли копировать исходные файлы на удаленный компьютер, и позволяет указать, следует ли использовать rsync или sftp.

Прямое изменение CMakeSettings.json

Вы также можете напрямую редактировать CMakeSettings.json для создания пользовательских конфигураций. В редакторе параметров есть кнопка Изменить JSON в правом верхнем углу, которая открывает файл для редактирования.

Ниже приведен пример конфигурации, который можно использовать в качестве отправной точки:

    {
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": ""
    },

JSON IntelliSense помогает изменить файл CMakeSettings.json:

Снимок экрана: всплывающее окно CMake JSON IntelliSense в редакторе.

Редактор JSON также уведомляет о выборе несовместимых параметров.

Дополнительные сведения обо всех свойствах в файле см. в разделе Справочник по схеме CMakeSettings.json.

Visual Studio 2017 предоставляет несколько конфигураций CMake, определяющих способ вызова CMake для создания кэша CMake для данного проекта. Чтобы добавить новую конфигурацию, выберите раскрывающийся список конфигурации на панели инструментов и выберите пункт "Управление конфигурациями".

Снимок экрана: пункт

Можно выбрать из списка стандартных конфигураций:

Добавление конфигурации в список предварительно определенных конфигураций в диалоговом окне

При первом выборе конфигурации Visual Studio создает CMakeSettings.json файл в корневой папке проекта. Этот файл используется для повторного создания файла кэша CMake, например после операции Очистить.

Чтобы добавить другую конфигурацию, щелкните правой кнопкой мыши и выберите CMakeSettings.json пункт "Добавить конфигурацию".

Снимок экрана: контекстное меню с выбранным пунктом

Можно также изменить файл с помощью редактора параметров CMake. Щелкните правой кнопкой мыши CMakeSettings.json Обозреватель решений и выберите пункт "Изменить параметры CMake". Или выберите Управление конфигурациями из раскрывающегося списка конфигурации в верхней части окна редактора.

Вы также можете напрямую редактировать CMakeSettings.json для создания пользовательских конфигураций. Ниже приведен пример конфигурации, который можно использовать в качестве отправной точки:

    {
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": ""
    },

JSON IntelliSense помогает изменить файл CMakeSettings.json:

Снимок экрана: всплывающее окно CMake JSON IntelliSense в редакторе.

Всплывающее окно JSON IntelliSense для "конфигураций" показывает сборкуCommandArgs, buildRoot, cmakeCommandArgs, configurationType, среди прочего.

Дополнительные сведения о каждом из свойств в файле см CMakeSettings.json . в справочнике по схеме.

См. также

Проекты CMake в Visual Studio
Настройка проекта Linux CMake
Подключение к удаленному компьютеру Linux
Настройка сеансов отладки CMake
Развертывание, запуск и отладка проекта Linux
Справочник по предопределенной конфигурации CMake