C++ и Python

Настройка рабочей среды

Установка и настройка VS Code

Установка VS Code

Установка VS Code не представляет сложностей. Достаточно скачать установочный файл со страницы загрузок и запустить его.

Далее необходимо установить Git for Windows, MinGw, CMake и Miniconda3.

Теперь настроим VS Code для удобной работы с языками C++ и Python.

Расширения VS Code

Установите следующие расширения VS Code:

Выбор интерпретатора python

При начале работы с кодом python (файлом с расширением .py) VS Code предложит выбрать интерпретатор python, который будет использоваться для подсветки кода, проверки синтаксиса и вывода подсказок:

vscode-python-interpreter

Можете, например, выбрать интерпретатор из недавно созданного окружения nsu.

Создадим файл test.py, содержащий одну строку:

print('Hello, world!')

Исполнить этот скрипт можно, открыв консоль в VS Code с помощью сочетания клавиш Ctrl+J и набрав в ней

python test.py

В правом верхнем углу окна находится кнопка с зеленым треугольником ▷, нажатие на которую приводит к тому же результату:

vscode-python-hello-world

Настройка работы с GCC

Создайте файл test.cpp, содержащий следующий код:

#include <iostream>

int main() {
    std::cout << "Hello, world!" << std::endl;
    return 0;
}

Скомпилируем его с помощью компилятора GCC и командной строки. Откройте консоль в VS Code (Ctrl+J) и исполните команду

> g++ test.cpp

Компилятор создал исполняемый файл a.exe. Запустите его:

> .\a.exe
Hello, world!

Работает. Настроим теперь VS Code для автоматизации этого действия. Выберите в меню пункт Terminal -> Configure Default Build Task...:

vscode-cpp-default-build-task

Выберите из выпавшего списка пункт g++.exe. В результате будет сгенерирован файл .vscode/tasks.json подобный такому:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "C/C++: cpp.exe build active file",
            "command": "D:\\mingw\\mingw32\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

Теперь при нажатии клавиш Ctrl+Shift+B или выборе пункта меню Terminal -> Run Build Task будет выполняться компиляция открытого файла. Для файла test.cpp будет создан исполняемый файл test.exe.

Работа с CMake

Откройте новую рабочую директорию VS Code, создайте в ней файл main.cpp, содержащий следующий код:

#include <iostream>

int main() {
    std::cout << "Hello, world!" << std::endl;
    return 0;
}

и файл CMakeLists.txt со следующим содержанием:

cmake_minimum_required(VERSION 3.0.0)
add_executable(test main.cpp)

Эти два файла составляют минимальный CMake-проект. Выполним сначала сборку CMake-проекта через консоль: создайте в рабочей директории поддиректорию build, в которой будет осуществляться сборка, и перейдите в неё:

> mkdir build; cd build

Выполните настройку проекта и запустите сборку:

> cmake -G "MinGW Makefiles" ..
> 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-example-project

Кнопку "Сборка" запускает сборку, а кнопка &#9655; - исполняемый файл.

Если автоматическая настройка CMake привела к ошибке, то, вероятно, инициализация CMake выполнилась без параметра -G "MinGW Makefiles". В этом случае выполните эту команду в консоли, как показано выше. Достаточно выполнить это действие один раз, после чего конфигурация этого и других проектов будет выполняться верно.

Работа с git

Покажем как можно работать с git-репозиторием через VS Code. Выполните fork репозитория задания Hello, Classroom на GitHub:

github-fork

Это действие создает новый репозиторий в Вашем аккаунте. Разрешите автоматическое тестирование решения, нажав на большую зеленую кнопку во вкладке Actions:

github-actions

Новый репозиторий необходимо клонировать на Вашу локальную систему. Удобнее всего это делать с помощью протокола ssh. Для этого сначала необходимо включить OpenSSH Client, который по умолчанию выключен.

Взаимодействие с GitHub репозиторием будет происходить по протоколу ssh с помощью техники шифрования с открытым ключом. Создать пару из приватного и публичного ключа можно в консоли:

>ssh-keygen
Generating public/private rsa key pair.

По умолчанию сгенерированные ключи будут расположены в директории ~\.ssh. Файл с публичным ключом называется id-rsa.pub. Публичный ключ нужно добавить на GitHub. Для этого откройте раздел SSH and GPG keys в меню Settings и нажмите на кнопку New SSH key:

github-ssh-key

Заполните открывшуюся форму. В поле Key нужно скопировать содержимое файла id-rsa.pub. Проследите, чтобы при копировании не появились лишние переносы строк. Весь ключ должен быть расположен в одной строке.

Теперь мы готовы к клонированию репозитория. Выберите на компьютере директорию, в которой Вы будете работать с заданиями курса и перейдите в неё. Откройте страницу репозитория hello-classroom в Вашем аккаунте GitHub и скопируйте строку для клонирования через ssh:

github-clone

Выполните в консоли команду git clone:

> git clone git@github.com:fakestud/hello-classroom.git
Cloning into 'hello-classroom'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 15 (delta 0), reused 15 (delta 0), pack-reused 0
Receiving objects: 100% (15/15), done

Строка git@github.com:fakestud/hello-classroom.git есть скопированная выше строка. Репозиторий был клонирован в директорию hello-classroom. Выберите её в качестве рабочей директории VS Code. Прочитайте файл README.md, содержащий инструкции по решению задания. После решения задания выполните локальную проверку:

> conda activate nsu
> pip install -r .\requirements.txt
> g++ -std=c++17 main.cpp -o a.out
> test_cmd tests/ .\a.out
Running 1 tests on 4 CPUs...

test1
Command: .\a.out
Success

All 1 tests passed.

Тесты пройдены успешны. Значит, мы готовы к синхронизации репозитория GitHub с нашей локальной версией. В командной строке для этого достаточно выполнить следующие команды:

git add main.cpp
git commit -m "Task solved"
git push -u origin master

Редактор VS Code позволяет выполнить эти действия через графический интерфейс. VS Code отслеживает изменения локальной версии репозитория. Откройте вкладку контроля версий слева и посмотрите на список изменившихся файлов. В нашем случае это должен быть только файл main.cpp. Выполните команду git add, нажав на кнопку +:

vscode-git-add

Затем команду git commit, нажав на кнопку &#10003; и введя комментарий в текстовом поле:

vscode-git-commit

Наконец, выполните команду git push:

Источники