Visual studio code cmake настройка
На первом шаге проект нужно сконфигурировать, то есть создать финальный скрипт сборки, запустив cmake <параметры> <путь-к-каталогу> в будущем каталоге сборки.
На втором шаге нужно запустить финальный скрипт. Не вызывайте make ! Утилита cmake сделает это сама:
Структура CMakeLists.txt
В начале главного файла CMakeLists.txt ставят метаинформацию о минимальной версии CMake и названии проекта:
Затем следует список инструкций, служащих для вычисления различных переменных, создания целей сборки, подключения проектов из подкаталогов и так далее. Например, подключить дополнительный CMakeLists.txt из подкаталога можно так:
Целью может стать исполняемый файл, собираемый из исходного кода
Целью также может быть библиотека, статическая или динамическая.
Автогенерация проекта для Visual Studio (Windows)
Если используется Visual C++, то путь немного другой: на шаге конфигурирования создаётся проект для Visual Studio, который затем можно собрать из IDE либо так же из командной строки.
Созданный проект Visual Studio нельзя изменять и использовать постоянно, потому что при генерации проекта используются абсолютные пути и другие неприемлемые для постоянной работы вещи.
Если проект был сконфигурирован успешно, то в каталоге ../myapp-build появятся автоматически сгенерированный BUILD_ALL.sln и проекты для Visual Studio. Их можно открыть к IDE, либо собрать из командной строки с помощью cmake. Названия опций говорят сами за себя:
Зависимости между библиотеками и приложениями
Не используйте директивы include_directories , add_definitions , add_compile_options ! Они меняют глобальные настройки для всех целей, это создаёт проблемы при масштабировании.
- Используйте target_link_libraries для добавления статических и динамических библиотек, от которых зависит цель
- Используйте target_include_directories вместо include_directories для добавления путей поиска заголовков, от которых зависит цель
- Используйте target_compile_definitions вместо add_definitions для добавления макросов, с которыми собирается цель
- Используйте target_compile_options для добавления специфичных флагов компилятора, с которыми собирается цель
Вы можете выбирать область видимости настройки:
- PUBLIC делает настройку видимой для текущей цели и для всех зависящих от неё целей
- PRIVATE делает настройку видимой только для текущей цели
- INTERFACE делает настройку видимой только для всех зависящих от неё целей
Пример использования областей видимости:
Схема зависимостей условного проекта:
Выбор стандарта и диалекта C++
Для настройки стандарта и флагов языка C++ не добавляйте флаги напрямую!
В CMake версии 3.8+ вы можете прямо потребовать включить нужный стандарт:
В CMake версии до 3.7 включительно можно использовать set_target_properties (если не работает, то у вас слишком старый CMake):
Для разработчиков библиотек есть более тонкий контроль над возможностями языка:
Функции в CMake
CMake позволяет объявлять функции командами function(name) / endfunction() и макросы командами macro(name) / endmacro() . Предпочитайте функции, а не макросы, т.к. у функций есть своя область видимости переменных, а у макросов - нет.
Добавление исходников к цели с target_sources
Лучше добавлять специфичные исходники с помощью target_sources, а не с помощью дополнительных переменных.
Интерфейс к утилитам командной строки
Функция find_package
Функция find_package принимает имя библиотеки как аргумент и обращается к CMake, чтобы найти скрипт для настройки переменных данной библиотеки. В итоге при сборке либо возникает ошибка из-за того что пакет не найден, либо добавляются переменные, хранящие пути поиска заголовков, имена библиотек для компоновщика и другие параметры.
Пример подключения Boost, вызывающего встроенный в CMake скрипт FindBoost:
Пример подключения библиотеки Bullet с помощью встроенного скрипта FindBullet и компоновки с приложением my_app:
В CMake 3.19 и 3.20 был зарелижен CMakePresets.json, который позволяет пользователям указывать общие параметры настройки, сборки и тестирования и делиться ими с другими пользователями. Мы добавили поддержку CMakePresets.json в Visual Studio и создали расширение CMake Tools для Visual Studio Code. Теперь вы можете вызывать CMake с CMakePresets.json в Visual Studio, в Visual Studio Code, в конвейере непрерывной интеграции и из терминалов в Windows, Linux и macOS.
Почему я должен использовать CMake Presets?
Поддержка configurePresets была зарелижена в CMake 3.19. Наша команда в Microsoft работала над поддержкой buildPresets и testPresets в CMake 3.20, и мы очень рады решить некоторые типичные проблемы, связанные с конфигурацией и сборкой CMake, с помощью CMake Presets (пресетов).
Более плавный переход между Visual Studio и Visual Studio Code. С добавлением поддержки CMakePresets.json один и тот же файл можно использовать для управления CMake как в Visual Studio, так и в Visual Studio Code. Это упрощает разработчикам в вашей команде переключение между Visual Studio и Visual Studio Code и позволяет работать в среде разработки, которая лучше всего отвечает их текущим потребностям.
Предустановки для отдельно взятого проекта всегда можно сохранить или достать из системы контроля версий. CMake поддерживает два файла: CMakePresets.json и CMakeUserPresets.json. CMakePresets.json предназначен для сохранения глобальных предустановок проекта, а CMakeUserPresets.json задуман для хранения собственных локальных предустановок под отдельных разработчиков. Это гарантирует, что информацию, касающуюся конкретного проекта, можно будет вносить в систему контроля версий, а новым членам группы будет проще влиться в работу. Это также упрощает для команд синхронизацию изменений в своих сборках CMake. И CMakePresets.json, и CMakeUserPresets.json поддерживаются в Visual Studio и Visual Studio Code.
Воспроизведение сборок в Visual Studio и Visual Studio Code из командной строки. Поскольку CMakePresets.json поддерживается самим CMake, тот же файл CMakePresets.json можно использовать для вызова CMake в Visual Studio, в Visual Studio Code, в конвейере непрерывной интеграции и из командной строки в Windows, Linux и macOS. Вызов CMake с CMakePresets.json из командной строки поддерживается с CMake версии 3.20.
Упростите возню с инструкциями по сборке для проектов CMake с открытым исходным кодом. Вы можете запулить любой проект, в корневом каталоге репозитория которого есть файл CMakePresets.json, собрать и протестировать его локально, используя инструкции, вложенные в пресет. Все аргументы команды, которые могут быть переданы в CMake или CTest из командной строки, можно указать в Configure, Build или Test пресетах.
Больше информации о пресетах CMake вы можете найти в моей недавней презентации в ACCU, где я демонстрирую, как использовать CMakePresets.json в Visual Studio, из командной строки и в конвейере GitHub Actions. Вы также можете ознакомиться с примером файла CMakePresets.json, зарегистрироваться в Pure Virtual C++ или почитать официальную документацию CMake. Более подробная информация об интеграции пресетов CMake в Visual Studio и VS Code приведена ниже.
Пресеты CMake в Visual Studio
Лучшим источником информации об интеграции пресетов CMake в Visual Studio является наша документация. Интеграция пресетов CMake в Visual Studio пока еще в статусе превью.
CMakePresets.json станет рекомендуемой альтернативой CMakeSettings.json. Visual Studio никогда не будет считывать данные одновременно из CMakePresets.json и CMakeSettings.json. Вы можете включить интеграцию пресетов CMake для всех проектов в Tools > Options > CMake > General. Чтобы активировать интеграцию, необходимо закрыть и снова открыть папку в Visual Studio.
Вы можете включить интеграцию пресетов CMake для одного проекта, добавив файл CMakePresets.json в корень открытой папки. Опять же, для активации интеграции вы должны закрыть и снова открыть папку. Дополнительные сведения смотрите в разделе Enable CMake Presets integration in Visual Studio 2019.
После включения интеграции пресетов CMake вы увидите три раскрывающихся списка в панели меню.
В раскрывающемся списке слева указывается активная целевая система (Target System). Это система, в которой CMake будет вызываться для настройки и сборки проекта. В этом раскрывающемся списке отображается локальный компьютер, все SSH-подключения в Connection Manager по имени узла и все инсталляции Windows Subsystem для Linux (WSL), которые сможет найти Visual Studio.
В раскрывающемся списке посередине указывается активный Configure Preset, который будет использоваться при вызове CMake для создания системы сборки проекта. В этом раскрывающемся списке приведены не скрытые Configure пересеты, определенные в файлах CMakePresets.json и CMakeUserPresets.json, которые применяются в Target System. Активный Configure Preset на изображении выше - это ninja-debug.
В раскрывающемся списке справа указывается активный Build Preset, который будет использоваться при вызове CMake для сборки проекта. В этом раскрывающемся списке приведены не скрытые Build пресеты, определенные в файлах CMakePresets.json и CMakeUserPresets.json, которые применяются к активному Configure Preset. Активный Build Preset на изображении выше - verbose-build. Ознакомьтесь с нашей документацией по настройке и сборке в разделе CMake configuration and build.
С помощью Visual Studio вы можете редактировать, создавать и отлаживать ваши CMake таргеты в Windows, WSL и удаленных системах из одной IDE. Visual Studio автоматически скопирует ваш исходный код в указанную целевую систему, но ваши инструменты сборки (CMake, генератор, компиляторы), rsync, zip и gdb должны быть уже установлены. Дополнительная информация в разделе Creating a Linux environment.
Дополнительную информацию о добавлении, редактировании пресетов, запуске тестов и многом другом смотрите в нашей документации в разделе CMake Presets integration in Visual Studio.
Пресеты CMake в расширении CMake Tools для Visual Studio Code
Лучшим источником информации об интеграции пресетов CMake в расширение CMake Tools является наша документация. Интеграция пресетов CMake в расширение CMake Tools пока еще в статусе превью.
При использовании cmake для компиляции программ на C / C ++ в Windows вам сначала понадобится CMake, установите среду компиляции gcc / g ++, затем используйте VSCode и настройте CMakelist.txt.
Что такое CMake
Возможно, вы слышали о нескольких инструментах Make, таких как GNU Make, Qmake QT, MS nmake от Microsoft, BSD Make (pmake), Makepp и так далее. Эти инструменты Make следуют различным спецификациям и стандартам, и формат исполняемого ими файла Makefile сильно различается. Это создает серьезную проблему: если программное обеспечение хочет кросс-платформенное, оно должно гарантировать, что оно может быть скомпилировано на разных платформах. Если вы используете вышеупомянутый инструмент Make, вы должны написать Makefile для каждого стандарта, что будет сумасшедшей работой.
CMake - это инструмент, разработанный для решения вышеуказанной проблемы: сначала он позволяет разработчикам написать независимый от платформы файл CMakeList.txt для настройки всего процесса компиляции, а затем генерирует требуемый локализованный Makefile и файл проекта в соответствии с платформой целевого пользователя. Например, Unix Makefile или Windows Visual Project. Так что «Пиши один раз, беги везде». Очевидно, что CMake - более продвинутый инструмент настройки компиляции, чем приведенный выше. Некоторые известные проекты с открытым исходным кодом, использующие CMake в качестве системы архитектуры проектов, включают VTK, ITK, KDE, OpenCV, OSG и т. Д.
Обычно процесс генерации и компиляции Makefile с использованием CMake выглядит следующим образом:
- Написать файл конфигурации CMake CMakeLists.txt
- Выполните команду cmake PATH или ccmake PATH для генерации Makefile (разница между ccmake и cmake заключается в том, что первый предоставляет интерактивный интерфейс), где PATH - это каталог, в котором находится CMakeLists.txt.
- Используйте команду make для компиляции
готов
1. VSCode (следующие плагины должны быть установлены)
C/C++
C++ Intellisense
CMake
CMake tools
CMake Tools Helper
2. MinGW, руководство по установке [Портал】
3.CMake
Установить CMake
Попробуйте выбрать версию последней версии, которая является более стабильной.
Как показано на рисунке, загрузите установочный файл с суффиксом .msi и установите его напрямую.
Его можно установить одним щелчком мыши. Не забудьте проверить, чтобы добавить cmake к переменным окружения во время процесса установки.
Проверить успешную установку
Введите следующую команду в командной строке
cmake -version
Как показано ниже, приведена некоторая базовая информация, указывающая на нормальную установку.
Настройте CMake в VSCode
Как правило, после того, как вы просто установите плагин CMake, вам будет автоматически предложено выбрать цепочку инструментов компиляции. Если подсказки нет или вы хотите заменить другие цепочки инструментов компиляции, вы можете использовать ctrl + shiftl + p, ввести следующие инструкции, а затем выбрать собственную установленную компиляцию во всплывающем окне. Цепочка для инструментов.
CMake:Select a Kit
Использование CMake
Теперь мы создаем каталог со следующей структурой:
Код main.c выглядит следующим образом:
Чтобы скомпилировать этот файл, мы редактируем файл CMakeLists.txt следующим образом:
Затем войдите в каталог Build и выполните cmake
Вывод выглядит следующим образом, и в папке Build создается много файлов, включая файл Makefile.
Файлы, содержащиеся в папке Build
На данный момент мы используем make Команда, вы можете скомпилировать нашу программу.
Наконец, попробуйте, результат нормальный.
Интеллектуальная рекомендация
совместный запрос mysql с тремя таблицами (таблица сотрудников, таблица отделов, таблица зарплат)
1. Краткое изложение проблемы: (внизу есть инструкция по созданию таблицы, копирование можно непосредственно практиковать с помощью (mysql)) Найдите отделы, в которых есть хотя бы один сотрудник. Отоб.
[Загрузчик классов обучения JVM] Третий день пользовательского контента, связанного с загрузчиком классов
IP, сеанс и cookie
Установка VS Code не представляет сложностей. Достаточно скачать установочный файл со страницы загрузок и запустить его.
Теперь настроим VS Code для удобной работы с языками C++ и Python.
Расширения VS Code
Установите следующие расширения VS Code:
Выбор интерпретатора python
При начале работы с кодом python (файлом с расширением .py ) VS Code предложит выбрать интерпретатор python, который будет использоваться для подсветки кода, проверки синтаксиса и вывода подсказок:
Можете, например, выбрать интерпретатор из недавно созданного окружения nsu.
Создадим файл test.py , содержащий одну строку:
Исполнить этот скрипт можно, открыв консоль в VS Code с помощью сочетания клавиш Ctrl+J и набрав в ней
Настройка работы с GCC
Создайте файл test.cpp , содержащий следующий код:
Скомпилируем его с помощью компилятора GCC и командной строки. Откройте консоль в VS Code ( Ctrl+J ) и исполните команду
Компилятор создал исполняемый файл a.exe . Запустите его:
Работает. Настроим теперь VS Code для автоматизации этого действия. Выберите в меню пункт Terminal -> Configure Default Build Task. :
Выберите из выпавшего списка пункт g++.exe . В результате будет сгенерирован файл .vscode/tasks.json подобный такому:
Теперь при нажатии клавиш Ctrl+Shift+B или выборе пункта меню Terminal -> Run Build Task будет выполняться компиляция открытого файла. Для файла test.cpp будет создан исполняемый файл test.exe .
Работа с CMake
Откройте новую рабочую директорию VS Code, создайте в ней файл main.cpp , содержащий следующий код:
и файл CMakeLists.txt со следующим содержанием:
Эти два файла составляют минимальный CMake-проект. Выполним сначала сборку CMake-проекта через консоль: создайте в рабочей директории поддиректорию build , в которой будет осуществляться сборка, и перейдите в неё:
Выполните настройку проекта и запустите сборку:
В первой команде мы указали, что сборка будет осуществляться с помощью MinGW и что файлы проекта расположены в родительской директории (путь .. ). Вторая команда осуществляет сборку в текущей директории (путь . ). В директории build должен появиться исполняемый файл test.exe .
Расширение VS Code для работы с CMake позволяет автоматизировать сборку проекта. Выберите рабочую директорию VS Code (комбинация клавиш Ctrl+K+O ), содержащую файлы main.cpp и CMakeLists.txt . Наберите комбинацию клавиш Ctrl+Shift+P и в строке сверху наберите команду >CMake: Configure . Это запустит настройку инструментов CMake. После завершения настройки в нижней части окна появятся инструменты управления сборкой:
Если автоматическая настройка CMake привела к ошибке, то, вероятно, инициализация CMake выполнилась без параметра -G "MinGW Makefiles" . В этом случае выполните эту команду в консоли, как показано выше. Достаточно выполнить это действие один раз, после чего конфигурация этого и других проектов будет выполняться верно.
Работа с git
Покажем как можно работать с git-репозиторием через VS Code. Выполните fork репозитория задания Hello, Classroom на GitHub:
Это действие создает новый репозиторий в Вашем аккаунте. Разрешите автоматическое тестирование решения, нажав на большую зеленую кнопку во вкладке Actions:
Новый репозиторий необходимо клонировать на Вашу локальную систему. Удобнее всего это делать с помощью протокола ssh. Для этого сначала необходимо включить OpenSSH Client, который по умолчанию выключен.
Взаимодействие с GitHub репозиторием будет происходить по протоколу ssh с помощью техники шифрования с открытым ключом. Создать пару из приватного и публичного ключа можно в консоли:
По умолчанию сгенерированные ключи будут расположены в директории
\.ssh . Файл с публичным ключом называется id-rsa.pub . Публичный ключ нужно добавить на GitHub. Для этого откройте раздел SSH and GPG keys в меню Settings и нажмите на кнопку New SSH key :
Заполните открывшуюся форму. В поле Key нужно скопировать содержимое файла id-rsa.pub . Проследите, чтобы при копировании не появились лишние переносы строк. Весь ключ должен быть расположен в одной строке.
Теперь мы готовы к клонированию репозитория. Выберите на компьютере директорию, в которой Вы будете работать с заданиями курса и перейдите в неё. Откройте страницу репозитория hello-classroom в Вашем аккаунте GitHub и скопируйте строку для клонирования через ssh:
Выполните в консоли команду git clone :
Тесты пройдены успешны. Значит, мы готовы к синхронизации репозитория GitHub с нашей локальной версией. В командной строке для этого достаточно выполнить следующие команды:
Редактор VS Code позволяет выполнить эти действия через графический интерфейс. VS Code отслеживает изменения локальной версии репозитория. Откройте вкладку контроля версий слева и посмотрите на список изменившихся файлов. В нашем случае это должен быть только файл main.cpp . Выполните команду git add , нажав на кнопку +:
Читайте также: