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


Проекты CMake в Visual Studio

CMake — это кроссплатформенное средство с открытым кодом, которое позволяет определять процессы сборки, выполняемые на множестве платформ. В этой статье предполагается, что вы уже знакомы с CMake. См. документацию по CMake для получения дополнительных сведений. Рекомендуем воспользоваться учебником по CMake в качестве отправной точки.

Примечание.

За последние несколько выпусков была улучшена интеграция CMake с Visual Studio. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.

Встроенная поддержка CMake в Visual Studio позволяет изменять проекты CMake, а также выполнять их сборку и отладку в Windows, в подсистеме Windows для Linux (WSL) и в удаленных системах из одного и того же экземпляра Visual Studio. Файлы проекта CMake (например, CMakeLists.txt) непосредственно используются в Visual Studio в целях IntelliSense и для обзора. cmake.exe вызывается напрямую средой Visual Studio для конфигурации и сборки CMake.

Установка

Средства C++ CMake для Windows устанавливаются в рамках рабочих нагрузок Разработка классических приложений на C++ и Разработка приложений для Linux на C++. Для кроссплатформенного развертывания с использованием CMake требуются инструменты C++ CMake для Windows и разработка Linux на C++.

Снимок экрана установщика Visual Studio.

В установщике выбран раскрывающийся список "Разработка классических приложений" с помощью C++, и выбраны инструменты C++ CMake для Windows.

Дополнительные сведения см. в разделе Установка рабочей нагрузки Linux для проектов C++ в Visual Studio.

Интеграция с IDE

Если открыть папку, содержащую файл CMakeLists.txt, происходит следующее:

Снимок экрана: первое диалоговое окно, которое открывается при запуске Visual Studio.

Диалоговое окно предлагает следующие параметры: клонирование репозитория, открытие проекта или решения, открытие локальной папки или создание нового проекта. На снимке экрана выделена надпись "Открыть локальную папку".

  • Visual Studio добавляет пункт CMake в меню Проект с командами для просмотра и редактирования сценариев CMake.

  • В обозревателе решений отображаются структура папок и файлы.

  • Visual Studio запускает CMake и создает файл кэша CMake (CMakeCache.txt) для конфигурации по умолчанию. В окне вывода отображается командная строка CMake, а также прочие выходные данные CMake.

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

Примечание.

Начиная с Visual Studio 2022 версии 17.1 (предварительная версия 2), если ваш основной файл CMakeLists.txt находится в подпапке, а не в корне рабочей области, вам предложат включить интеграцию CMake или нет. Дополнительные сведения см. в разделе CMake с частичной активацией.

После успешного создания кэша CMake можно также просмотреть проекты, логически упорядоченные по целевым объектам. Нажмите кнопку "Выбрать представление" на панели инструментов Обозреватель решений. В списке в Обозреватель решений - виды выберите вид целевых объектов CMake и нажмите Enter, чтобы открыть вид целевых объектов:

Скриншот окна представлений Обозреватель решений. Представление папок открыто. Выделен параметр

Нажмите кнопку Показать все файлы в верхней части Обозревателя решений, чтобы просмотреть все выходные данные, созданные CMake, в папках out/build/<config>.

Используйте файл CMakeLists.txt в каждой папке проекта так же, как в любом проекте CMake. Вы можете указывать исходные файлы, находить библиотеки, устанавливать параметры компилятора и компоновщика и указывать другие сведения о системе сборки. Дополнительные сведения о языковых службах CMake, предоставляемых Visual Studio, см. в разделе Редактирование файлов CMakeLists.txt.

Visual Studio использует файл конфигурации CMake для управления созданием кэша CMake и его сборкой. Дополнительные сведения см. в статьях Настройка проектов CMake и Создание проектов CMake.

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

Большинство функций Visual Studio и языка C++ поддерживаются проектами CMake в Visual Studio. Вот некоторые примеры.

Примечание.

Для других типов проектов в виде папок используется дополнительный файл JSON CppProperties.json. Этот файл не относится к проектам CMake.

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

На этапе настройки CMake создается система сборки проекта. Это эквивалентно вызову cmake.exe из командной строки. Дополнительные сведения о шаге настройки CMake см. в документации по CMake.

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

При внесении значительных изменений в файл конфигурации CMake или файл CMakeLists.txt, Visual Studio автоматически запустит шаг настройки CMake. Вы можете вызвать шаг настройки вручную: выберите > проекта" на панели инструментов. Вы также можете изменить параметры конфигурации в Инструменты>Параметры>CMake>Общие.

Снимок экрана: параметры конфигурации CMake в окне параметров Visual Studio.

Параметры настройки CMake вызываются. Выбраны уведомления кэша C Make. В разделе "Когда кэш устарел:" выбран параметр "Никогда не запускать шаг настройки автоматически".

Если этап настройки завершится без ошибок, доступная информация будет использоваться в C++ IntelliSense и языковых службах. Они также используются в операциях сборки и отладки.

Можно также открыть существующий кэш CMake в Visual Studio. Дополнительные сведения см. в статье Открытие существующего кэша.

Настройка отзывов и уведомлений о конфигурации

По умолчанию большинство сообщений конфигурации подавляются, если нет ошибки. Чтобы просмотреть все сообщения, выберите Сервис>Параметры>CMake>Включить развернутый вывод диагностики CMake.

Можно также отключить все уведомления кэша CMake (полоски золотистого цвета), сняв флажок Показать уведомления кэша CMake.

Настройка групп источников представления целевых объектов

По умолчанию представление целевых объектов CMake игнорирует следующие исходные группы: "Исходные файлы", "Файлы заголовков", "Ресурсы", "Файлы объектов". Это связано с тем, что они включены по умолчанию в большинство проектов CMake, и это приведет к ненужным увеличению количества щелчков, необходимых для навигации по представлению целевых объектов.

Включите использование этих исходных групп, активировав Инструменты>Параметры>CMake>Включить использование игнорируемых исходных групп в представлении CMake Targets.

Устранение ошибок кэша CMake

Если вам нужны дополнительные сведения о состоянии кэша CMake для диагностики проблемы, откройте главное меню Проект или контекстное меню CMakeLists.txt в обозревателе решений, чтобы выполнить одну из следующих команд:

  • Параметр Просмотреть CMakeCache.txt позволяет открыть в редакторе файл CMakeCache.txt из каталога сборки. Любые внесенные здесь изменения в CMakeCache.txt удаляются при очистке кэша. Чтобы внести изменения, которые сохраняются после очистки кэша, см. статью "Настройка параметров CMake" или "Настройка" и сборка с помощью предустановок CMake.

  • Параметр Удаление кэша и перенастройка позволяет удалить каталог сборки и выполнить повторную настройку из чистого кэша.

  • Параметр Настроить кэш заставляет этап генерации выполняться, даже если Visual Studio считает среду актуальной.

Создание проектов CMake

На этапе сборки CMake создается уже сгенерированное двоичное дерево проекта. Это эквивалентно вызову cmake --build из командной строки. Дополнительные сведения о шаге сборки CMake см. в документации по CMake.

Для создания проекта CMake доступны следующие варианты:

  1. На панели инструментов найдите раскрывающийся список Элемент автозагрузки. Выберите предпочтительный целевой объект и нажмите клавишу F5 или кнопку Выполнить на панели инструментов. Сначала автоматически выполняется сборка проекта как решения Visual Studio.

  2. Щелкните правой кнопкой мыши целевой объект CMake, для которого в обозревателе решений активен параметр Просмотр целевых объектов CMake и выберите в контекстном меню пункт Сборка.

  3. В главном меню выберите "Построить > все". Убедитесь, что целевой объект CMake уже выбран в раскрывающемся списке Автозапускаемый элемент на панели инструментов.

Как и следовало ожидать, результаты сборки отображаются в окне вывода и списке ошибок.

Снимок экрана: окно списка ошибок Visual Studio Предупреждения сборки CMake о преобразованиях, которые могут привести к потере данных, например преобразованию из float в целое число, видны. :::image-end:::

Изменение параметров сборки

Для управления сборками CMake Visual Studio использует файл конфигурации CMake. Файлы конфигурации CMake инкапсулируют опции сборки, такие как параметры инструментов сборки и переменные окружения. Если CMakePresets.json это активный файл конфигурации, см. статью "Настройка и сборка с помощью предустановок CMake". Если CMakeSettings.json является вашим активным файлом конфигурации, см. раздел «Настройка параметров сборки CMake». CMakePresets.json доступен в Visual Studio 2019 версии 16.10 или более поздней и является рекомендуемым файлом конфигурации CMake.

Отладка проектов CMake

Все исполняемые целевые объекты CMake отображаются в раскрывающемся списке Автозапускаемый элемент в панели инструментов. Чтобы начать отладку, выберите один и нажмите > кнопку "Начать отладку" на панели инструментов. В проекте CMake параметр "Текущий документ" допустим только для файлов CPP.

Снимок экрана: раскрывающийся список отладки Visual Studio.

В раскрывающемся списке есть следующие параметры: Показать / скрыть цели отладки, текущий документ, примеры (которые выделены), box2d_tests и примеры без GUI.

Команды Отладка или F5 сначала выполняют сборку проекта, если с момента предыдущей сборки были внесены изменения. Изменения файла конфигурации CMake (CMakePresets.json или CMakeSettings.json) или CMakeLists.txt приводят к повторному созданию кэша CMake.

Вы можете настроить сеанс отладки CMake, задав свойства в файле launch.vs.json. Чтобы настроить параметры отладки для определенного целевого элемента, выберите целевой элемент в раскрывающемся списке "Элемент запуска" и нажмите кнопку "Отладка" и "Параметры запуска для <активного целевого элемента>. Дополнительные сведения о сеансах отладки CMake см. в разделе Настройка сеансов отладки CMake.

"Только мой код" для проектов CMake

При сборке для Windows с помощью компилятора MSVC в проектах CMake поддерживается отладка "Только мой код". Чтобы изменить параметр "Только мой код", перейдите в раздел Сервис>Параметры>Отладка>Общие. Дополнительные сведения об отладке с помощью Just My Code см. в разделе Отладка только пользовательского кода с помощью Just My Code.

Функция «Edit and Continue» для проектов CMake

При сборке для Windows с помощью компилятора MSVC в проектах CMake предусмотрена поддержка функции "Изменение и продолжение". Добавьте следующий код в файл CMakeLists.txt, чтобы включить функцию "Изменение и продолжение". Дополнительные сведения об изменении и продолжении см. в разделе "Настройка правки и продолжения" (C#, VB, C++).

if(MSVC)
  target_compile_options(<target> PUBLIC "/ZI")
  target_link_options(<target> PUBLIC "/INCREMENTAL")
endif()

Подключение к проекту CMake, запущенному в Linux

Visual Studio позволяет выполнять отладку процесса, выполняющегося в удаленной системе Linux или WSL, и отлаживать его с помощью отладчика GDB. Для начала выберите Отладка>Подключение к процессу, задайте для параметра Тип подключения значение SSH и выберите Цель подключения из списка в диспетчере подключений. Выберите процесс из списка доступных процессов и нажмите кнопку Подключить. На компьютере Linux должен быть установлен GDB. Дополнительные сведения о SSH-подключениях см. в разделе Диспетчер подключений

Снимок экрана: меню

В диалоговом окне доступны следующие параметры: тип подключения (для параметра SSH), целевой объект подключения (для параметра demo@ 172. 20. 60. 6) и список доступных процессов, к которому можно подключиться".

Частичная активация CMake

В Visual Studio 2022 версии 17.1 и более поздних версиях функция CMake не будет включена автоматически, если корневая CMakeLists.txt папка не содержит файл. Вместо этого диалоговое окно предложит вам включить функции CMake для проекта. При отклонении создание кэша CMake не запустится, а конфигурации CMake (из CMakeSettings.json или CMakePresets.json) не будут отображаться в раскрывающемся списке конфигурации. Если вы принимаете, вы перейдете в файл CMakeWorkspaceSettings.json конфигурации на уровне рабочей области (хранящееся в каталоге .vs ), чтобы указать папки, для которые вы хотите включить CMake. (Эти папки содержат корневые CMakeLists.txt файлы.

Допустимые свойства:

Свойство Описание
enableCMake Включите интеграцию Visual Studio для этой рабочей области.
sourceDirectory Строка или массив строк, указывающие на каталог или каталоги с CMakeLists.txt. Допустимы макросы (например, такие как ${workspaceRoot}). Относительные пути основаны на корне рабочей области. Каталоги за пределами текущей рабочей области будут игнорироваться.

Вы можете получить доступ CMakeWorkspaceSettings.json через команду меню Project>настройки рабочей области CMake в любое время, даже если функциональность CMake в данный момент отключена.

Открытие существующего кэша

При открытии существующего файла кэша CMake (CMakeCache.txt) Visual Studio не пытается управлять кэшем и деревом сборки. Настраиваемые или предпочтительные инструменты имеют полный контроль над тем, как CMake настраивает проект.

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

Примечание.

По умолчанию для работы с существующим кэшем используется режим cmake-server, который был удален из CMake в версии 3.20. Чтобы продолжить использовать эти функции в Visual Studio 2019 версии 16.10 и выше, выполните одно из следующих действий:

  • Установите CMake версии 3.19 или ниже вручную. Затем в конфигурации существующего кэша задайте свойство cmakeExecutable так, чтобы использовать эту версию CMake.
  • В конфигурации существующего кэша задайте свойство cacheGenerationCommand, чтобы позволить Visual Studio запрашивать нужные файлы для файлового API-интерфейса CMake. Дополнительные сведения об этом свойстве см. в Справочнике по CMakeSettings.json.
  • Используйте файл запроса, чтобы запрашивать файлы для файлового API-интерфейса CMake при создании кэша перед его открытием в Visual Studio. Инструкции по файлу запроса см. в следующем разделе Дополнительные способы устранения неполадок с кэшем CMake.

Дополнительные способы устранения неполадок с кэшем CMake

Visual Studio использует API на основе файлов в CMake (версия 3.14 и более поздние) для заполнения редактора сведениями, связанными со структурой проекта. Дополнительные сведения см. в записи блога команды C++, посвященной использованию рабочих областей с несколькими корнями и API на основе файлов.

Прежде чем создавать кэш CMake, вашим пользовательским или предпочтительным инструментам может потребоваться создать файл запроса с именем .cmake/api/v1/query/client-MicrosoftVS/query.json в выходной папке сборки (папке, содержащей CMakeCache.txt). Файл запроса должен содержать следующее содержимое:

{"requests":[{"kind":"cache","version":2},{"kind":"cmakeFiles","version":1},{"kind":"codemodel","version":2}]}

Когда пользовательские или предпочтительные инструменты создают ваш кэш, CMake помещает файлы в каталог .cmake/api/v1/response, который Visual Studio использует для заполнения редактора сведениями, связанными со структурой вашего проекта.

Изменение файлов CMakeLists.txt

Чтобы изменить файл CMakeLists.txt, щелкните его правой кнопкой мыши в обозревателе решений и выберите пункт Открыть. Если вы вносите изменения в файл, отображается желтая строка состояния, которая сообщает о предстоящем обновлении IntelliSense. Это дает возможность отменить операцию обновления. Дополнительные сведения о CMakeLists.txt см. в документации по CMake.

Снимок экрана: файл CMakeLists.txt, редактируемый в Visual Studio.

Он содержит проект (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp) и install (TARGETS hello DESTINATION hello/bin). Сообщение в верхней части окна говорит, что данные c плюс IntelliSense будут обновляться после завершения создания кэша C Make.

Сразу после сохранения файла автоматически перезапускается этап настройки, отображающий информацию в окне вывода. Ошибки и предупреждения отображаются в списке ошибок или окне вывода. Дважды щелкните ошибку в окне Список ошибок, чтобы перейти к строке с ошибкой в CMakeLists.txt.

Снимок экрана: ошибка C Make в списке ошибок Visual Studio.

Выделено сообщение об ошибке C Make в строке 3 CMakeLists.txt. Подробности заключаются в том, что CMake не удалось найти файл конфигурации пакета, предоставленный sqlite3. C Make искал его в CMAKE_MODULE_PATH, но не смог найти его. Предложение заключается в добавлении префикса установки "sqlite3" для CMAKE_PREFIX_PATH или задания sqlite3_DIR в каталог, содержащий sqlite3Config.cmake и/или sqlitet3-config.cmake.

Языковые службы для CMake

Языковые службы для CMake доступны в Visual Studio 2019 версии 16.5 или более поздней. Она поддерживает функции навигации по коду, такие как переход к определению, просмотр определения и поиск всех ссылок для переменных, функций и целей в файлах скриптов CMake. Дополнительные сведения см. в разделе Навигация по коду для сценариев CMake.

Снимок экрана: окно

Результаты местоположения SUPERTUX_SOURCES_CXX показаны. Например, в list(SORT SSUPERTUX_SOURCES_CXX), file(GLOB SUPERTUX_SOURCES_CXX) и т. д.

Управление проектами CMake

Управление проектами CMake доступно в Visual Studio 2019 версии 16.5 или более поздней. С помощью функции управления проектами можно добавлять, удалять и переименовывать исходные файлы и целевые объекты в проектах CMake без изменения сценариев CMake вручную. При добавлении или удалении файлов из Обозреватель решений Visual Studio автоматически редактирует проект CMake. Может быть несколько мест, где имеет смысл добавить или удалить ссылку на скрипт CMake. В этом случае Visual Studio запрашивает, где нужно внести изменения и отображает предварительный просмотр предлагаемых изменений. Пошаговые инструкции см. в разделе Простое добавление, удаление и переименование файлов и целевых объектов в проектах CMake.

Снимок экрана: диалоговое окно

В дереве отображаются CMakeLists.txt, под которым находятся два элемента: add_executable и set. Установлен флажок. В окне предварительного просмотра показано, где будут вноситься изменения. Набор строк (PROJECT_SRC "CmakeProject4.cpp" "CMakeProject4.h" показывает "Demo.cpp" перед закрывающей круглой скобкой. Кнопка "Применить" принимает изменение или можно нажать кнопку отмены.

IntelliSense для проектов CMake

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

Если CMakePresets.json является вашим активным файлом конфигурации CMake, вы можете указать параметры IntelliSense с помощью intelliSenseMode и intelliSenseOptions в карте параметров вендора Visual Studio. Дополнительные сведения см. в справочнике по карте поставщиков параметров Visual Studio.

Если CMakeSettings.json является вашим активным файлом конфигурации CMake, можно указать параметры IntelliSense, используя intelliSenseMode в CMakeSettings.json. Дополнительную информацию смотрите в справочникеCMakeSettings.json.

Настройка IntelliSense с помощью файлов цепочки инструментов CMake

В Visual Studio 2019 версии 16.9 и более поздних версиях Visual Studio автоматически настраивает IntelliSense в проектах CMake на основе переменных CMake при использовании цепочки инструментов CMake. Дополнительные сведения см. в статье Настройка IntelliSense с помощью файла цепочки инструментов CMake.

Интеграция с vcpkg

Проекты CMake, открытые в Visual Studio, интегрируются с кроссплатформенным диспетчером зависимостей C/C++ vcpkg. Прежде чем приступить к использованию vcpkg с Visual Studio, необходимо выполнить команду vcpkg integrate install. Инструкции и дополнительные сведения о vcpkg см. в следующей статье:

Если CMakeSettings.json это активный файл конфигурации, Visual Studio автоматически передает файл цепочки инструментов vcpkg (vcpkg.cmake) в CMake. Это поведение автоматически отключается при указании любых других цепочек инструментов в конфигурации параметров CMake.

Если CMakePresets.json — это ваш активный файл конфигурации, вам нужно задать путь к vcpkg.cmake в CMakePresets.json. Чтобы сохранить общий доступ к файлу, рекомендуется использовать переменную среды VCPKG_ROOT вместо абсолютного пути. Дополнительные сведения см. в разделе Включение интеграции vcpkg с предварительными настройками CMake. CMakePresets.json доступен в Visual Studio 2019 версии 16.10 или более поздней и является рекомендуемым файлом конфигурации CMake.

Запуск CMake из командной строки

Если CMakePresets.json это активный файл конфигурации CMake, вы можете легко воспроизвести локальные сборки за пределами Visual Studio. Дополнительные сведения см. в разделе Запуск CMake из командной строки или конвейера непрерывной интеграции. CMakePresets.json поддерживается в Visual Studio 2019 версии 16.10 или более поздней версии и является рекомендуемой конфигурацией CMake.

Если CMakeSettings.json является вашим активным файлом конфигурации CMake, вам потребуется вручную передать аргументы, закодированные в файле CMakeSettings.json, в CMake. Если вы установили CMake из Visual Studio Installer, можете запустить это средство из командной строки, сделав следующее:

  1. Запустите соответствующий файл vsdevcmd.bat (x86/x64). Дополнительные сведения см. в статье Сборка из командной строки.

  2. Перейдите в папку выходных данных.

  3. Запустите CMake, чтобы создать или настроить приложение.

В Visual Studio 2017 существует широкая поддержка CMake, включая кроссплатформенные проекты CMake. Компонент Инструменты Visual C++ для CMake использует функцию Открыть папку, чтобы позволить интегрированной среде разработки использовать файлы проекта CMake (например, CMakeLists.txt) для IntelliSense и просмотра. Поддерживаются генераторы Visual Studio и Ninja. Если вы используете генератор Visual Studio, он создает временный файл проекта и передает его в MSBuild. Однако проект никогда не загружается для IntelliSense или просмотра. Также можно импортировать существующий кэш CMake.

Установка

Средства Visual C++ для CMake устанавливаются в рамках рабочих нагрузок Разработка классических приложений на C++ и Разработка приложений для Linux на C++.

Снимок экрана установщика Visual Studio. Выбрана вкладка

Дополнительные сведения см. в разделе Установка рабочей нагрузки Linux для проектов C++ в Visual Studio.

Интеграция с IDE

При выборе "Файл > Открыть > Папку" для открытия папки, содержащей CMakeLists.txt файл, происходит следующее:

  • Visual Studio добавляет пункт CMake в главное меню с командами для просмотра и редактирования сценариев CMake.

  • Обозреватель решений отображает структуру папок и файлы.

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

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

Вы можете открыть папки, содержащие любое количество проектов CMake. Visual Studio обнаруживает и настраивает все "корневые" файлы CMakeLists.txt в рабочей области. Операции CMake (настройка, сборка, отладка), C++ IntelliSense и просмотр доступны для всех проектов CMake в вашей рабочей области.

Снимок экрана: Обозреватель решений Visual Studio.

Файлы и папки проекта CMake отображаются. Существует подкаталог тестов, CMakeLists.txt и hello.cpp. Существует папка hello-cmake-vcpkg, содержащая CMakeLists.txt, CMakeSettings.json и hello.cpp.

Вы также можете просмотреть проекты, логически упорядоченные по целевым объектам. Выберите Представление целевых объектов из раскрывающегося списка на панели инструментов в обозревателе решений:

Снимок экрана: кнопка выпадающего списка в Обозревателе решений Visual Studio, которая предлагает режим просмотра целей CMake. Который выбран.

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

В противном случае используйте CMakeLists.txt так же, как в любом проекте CMake, чтобы указывать исходные файлы, находить библиотеки, устанавливать параметры компилятора и компоновщика и указывать другие сведения о системе сборки.

Если вам нужно передавать аргументы для исполняемого файла во время отладки, можно использовать другой файл с именем launch.vs.json. В некоторых сценариях Visual Studio автоматически создает эти файлы. Вы можете изменить их вручную или даже создать файл самостоятельно.

Примечание.

Для других типов проектов "Открыть папку" используются два дополнительных файла JSON: CppProperties.json и tasks.vs.json. Ни один из них не связан с проектами CMake.

Импорт существующего кэша

Когда вы импортируете существующий файл CMakeCache.txt, Visual Studio автоматически извлекает настраиваемые переменные и создает на их основе предварительно заполненный файл CMakeSettings.json. Исходный кэш никак не изменяется. Его по-прежнему можно использовать из командной строки или с помощью любого средства или интегрированной среды разработки, которые использовались для его создания. Новый CMakeSettings.json файл помещается вместе с корнем CMakeLists.txtпроекта. Visual Studio создает кэш на основе файла параметров. Вы можете переопределить автоматическое создание кэша в диалоговом окне Инструменты > Параметры > CMake > Общие.

Импортируется не все содержимое кэша. Такие свойства, как генератор и расположение компиляторов, заменяются значениями по умолчанию, хорошо совместимыми с данной интегрированной средой разработки.

Импорт существующего кэша

  1. В главном меню выберите "Открыть > файл > CMake":

    Снимок экрана: главное меню Visual Studio. Выбран файл > Open > C Make.

    Эта команда открывает мастер импорта CMake из кэша.

  2. Перейдите к файлу CMakeCache.txt, который хотите импортировать, и нажмите кнопку ОК. Появляется мастер импорта проекта CMake из кэша:

    Снимок экрана мастера импорта проекта CMake из кэша. Путь к каталогу проекта CMake для импорта вводится в текстовое поле

    По завершении работы мастера вы увидите новый файл CMakeCache.txt в обозревателе решений рядом с корневым файлом CMakeLists.txt в проекте.

Создание проектов CMake

Для создания проекта CMake доступны следующие варианты:

  1. На панели инструментов "Общие" найдите раскрывающийся список Конфигурация. По умолчанию, скорее всего, отображается "Linux-Debug" или "x64-Debug". Выберите предпочтительную конфигурацию и нажмите клавишу F5 или щелкните кнопку Выполнить (с зеленым треугольником) на панели инструментов. Сначала автоматически выполняется сборка проекта как решения Visual Studio.

  2. Щелкните правой кнопкой мыши на CMakeLists.txt в обозревателе решений и выберите Сборка в контекстном меню. Если в структуре папок имеется несколько целевых объектов, можно выбрать сборку их всех или только одного из них.

  3. В главном меню выберите Сборка > Собрать решение (F7 или Ctrl+Shift+B). Убедитесь, что целевой объект CMake уже выбран в раскрывающемся списке Автозапускаемый элемент на панели инструментов Общие.

Снимок экрана Обозревателя решений Visual Studio после нажатия правой кнопкой мыши на CMakeLists.txt.

В меню есть такие параметры, как "Добавить", "Открыть", "Конфигурация задач", "Сборка", "Очистить всё" и т. д.

Вы можете настраивать конфигурации сборки, переменные среды, аргументы командной строки и другие параметры в файле CMakeSettings.json. Это позволяет вносить изменения, не изменяя файл CMakeLists.txt. Дополнительные сведения см. в статье Настраиваемые параметры CMake.

Как и следовало ожидать, результаты сборки отображаются в окне вывода и списке ошибок.

Снимок экрана: окно списка ошибок Visual Studio.

Предупреждения сборки CMake о преобразованиях, которые могут привести к потере данных, например при преобразовании из float в целое число, отображаются.

В папке с несколькими целевыми объектами сборки можно указать целевой объект CMake для сборки: выберите элемент Сборка в меню CMake или контекстном меню CMakeLists.txt, чтобы указать целевой объект CMake для сборки. Нажмите клавиши CTRL+SHIFT+B в проекте CMake, чтобы выполнить сборку текущего активного документа.

Отладка проектов CMake

Для отладки проекта CMake выберите требуемую конфигурацию и нажмите клавишу F5. Или нажмите кнопку Выполнить на панели инструментов. Если для кнопки Выполнить отображается сообщение "Выбрать элемент запуска", выберите стрелку раскрывающегося списка и выберите целевой объект, который требуется запустить. (В проекте CMake параметр "Текущий документ" допустим только для файлов CPP.)

Снимок экрана: раскрывающийся список

Команды Выполнить или F5 сначала выполняют сборку проекта, если с момента предыдущей сборки были внесены изменения.

Вы можете настроить сеанс отладки CMake, задав свойства в файле launch.vs.json. Дополнительные сведения см. в разделе Настройка сеансов отладки CMake.

Изменение файлов CMakeLists.txt

Чтобы изменить файл CMakeLists.txt, щелкните его правой кнопкой мыши в обозревателе решений и выберите пункт Открыть. Если вы вносите изменения в файл, отображается желтая строка состояния, которая сообщает о предстоящем обновлении IntelliSense. Это дает возможность отменить операцию обновления. Дополнительные сведения о CMakeLists.txt см. в документации CMake.

Снимок экрана: редактирование файла CMakeLists.txt в Visual Studio.

Файл содержит: проект (hello-cmake), add_subdirectory (тесты), add_executable (hello hello.cpp) и установка (TARGETS hello DESTINATION hello/bin). Сообщение в верхней части окна сообщает, что данные C++ IntelliSense будут обновлены после того, как CMake завершит создание кэша.

Сразу после сохранения файла автоматически перезапускается этап настройки, отображающий информацию в окне вывода. Ошибки и предупреждения отображаются в списке ошибок или окне вывода. Дважды щелкните ошибку в окне Список ошибок, чтобы перейти к соответствующей строке в CMakeLists.txt.

Снимок экрана: ошибка C Make в списке ошибок Visual Studio.

Выделено сообщение об ошибке C Make в строке 3 CMakeLists.txt. Суть в том, что CMake не может найти файл конфигурации пакета, предоставленный sqlite3. C Make искал его в CMAKE_MODULE_PATH, но не смог найти его. Предложение заключается в добавлении префикса установки "sqlite3" для CMAKE_PREFIX_PATH или задания sqlite3_DIR в каталог, содержащий sqlite3Config.cmake и/или sqlitet3-config.cmake.

Шаг настройки CMake

Когда значительные изменения вносятся в CMakeSettings.json файлы или CMakeLists.txt файлы, Visual Studio автоматически повторно запускает шаг настройки CMake. Если шаг настройки завершается без ошибок, собранные данные становятся доступны в C++ IntelliSense и языковых службах. Они также используются в операциях сборки и отладки.

Несколько проектов CMake могут использовать одно и то же имя конфигурации CMake (например, x86-Debug). При выборе этой конфигурации все они настраиваются и компилируются в своей собственной корневой папке сборки. Вы можете отлаживать целевые элементы во всех проектах CMake, участвующих в данной конфигурации CMake.

Снимок экрана: главное меню Visual Studio, открытое только для сборки CMake > .

Контекстное меню показывает, что можно создать в этом случае hello-cmake-a\hello-cmake.exe (Проект hello-cmake) и hello-cmake-b\hello-cmake.exe (Проект hello-cmake). Выделен последний.

Можно ограничить сеансы сборки и отладки подмножеством проектов в рабочей области. Создайте новую конфигурацию с уникальным именем в CMakeSettings.json файле. Затем примените конфигурацию только к этим проектам. При выборе этой конфигурации IntelliSense, а также команды сборки и отладки применяются только для указанных проектов.

Устранение ошибок кэша CMake

Если вам нужны дополнительные сведения о состоянии кэша CMake для диагностики проблемы, откройте главное меню CMake или контекстное меню CMakeLists.txt в обозревателе решений, чтобы выполнить одну из следующих команд:

  • Просмотреть кэш открывает файл CMakeCache.txt из корневой папки сборки в редакторе. (Все изменения, внесенные здесь, CMakeCache.txt будут удалены при очистке кэша. Чтобы внести изменения, которые сохраняются после очистки кэша, см. раздел Настройка параметров CMake.)

  • Открыть папку кэша открывает окно проводника с корневой папкой сборки.

  • Очистить кэш удаляет корневую папку сборки, чтобы следующий шаг настройки CMake начинался с очистки кэша.

  • Создать кэш заставляет выполнить этап генерации, даже если в Visual Studio считают, что среда актуальна.

Автоматическое создание кэша можно отключить в диалоговом окне Параметры >>CMake > Общие.

Компиляция одного файла

Для сборки отдельного файла в проекте CMake щелкните правой кнопкой мыши файл в обозревателе решений. Выберите Компилировать во всплывающем меню. Вы также можете скомпилировать открытый в редакторе файл через главное меню CMake:

Снимок экрана: контекстное меню компиляции CMake > . Он содержит одну запись: Bullet3Collision.

Запуск CMake из командной строки

Если вы установили CMake из Visual Studio Installer, можете запустить это средство из командной строки, сделав следующее:

  1. Запустите соответствующий файл vsdevcmd.bat (x86/x64). Дополнительные сведения см. в статье Сборка из командной строки.

  2. Перейдите в папку выходных данных.

  3. Запустите CMake, чтобы создать или настроить приложение.

В Visual Studio 2015 пользователи Visual Studio могут использовать генератор CMake для создания файлов проекта MSBuild, которые интегрированная среда разработки использует для IntelliSense, просмотра и компиляции.

См. также

Руководство по созданию кроссплатформенных проектов C++ в Visual Studio
Настройка проекта Linux CMake
Подключение к удаленному компьютеру Linux
Настройка параметров сборки CMake
CMakeSettings.jsonСправочник схем
Настройка сеансов отладки CMake
Развертывание, запуск и отладка проекта Linux
Справочник по предопределенной конфигурации CMake
vcpkg в проектах CMake
Установка и использование пакетов с CMake в Visual Studio