# Работа с терминалом ## 1. Конфигурация ```bash $ mkdir ./build/ $ cd ./build/ $ cmake .. -DCMAKE_BUILD_TYPE=<config> ``` Вместо `<config>` можно использовать одну из существующих конфигураций: - **`Debug`** быстро компилируется и подходит для разработки. - **`ASan, LSan, MSan, UBSan`** подходят для отладки ошибок сегментации и других проблем с памятью. Рекомендуется запустить ваш код с санитайзерами перед отправкой на проверку! - **`Release`** нужен для сборки кода с оптимизациями и проверки скорости выполнения. ## 2. Сборка ```bash $ cmake --build ./build/ ``` Исполняемые файлы `./build/solution/image-transformer` и `./build/tester/image-matcher` будут собраны, их можно использовать для ручного тестирования. ## 3. Тестирование ```bash $ cmake --build ./build/ --target check # ИЛИ $ cd ./build/ $ ctest --output-on-failure ``` ## Бонус: `ssh` + `git` ### Как настроить SSH ключи ```bash $ ssh-keygen $ cat ~/.ssh/id_rsa.pub ``` В настройках профиля GitLab нужно открыть категорию `SSH Keys`, добавить новый ключ и скопировать содержимое `id_rsa.pub` туда. ### Как склонировать форк ```bash $ git clone ssh://git@gitlab.se.ifmo.ru:4815/<my username>/assignment-image-rotation.git $ cd ./assignment-image-rotation/ ``` ### Как отправить свои изменения обратно в форк ```bash $ git add ./solution/ $ git status $ git commit -m "Lab complete" $ git push origin master ``` После того, как вы откроете merge request, каждое новое изменение, добавленное таким образом, будет появляться там автомагически. ### Как обновить свою лабораторную, если преподаватель попросил "подтянуть к себе свежие изменения" из основного репозитория ```bash $ git remote add upstream ssh://git@gitlab.se.ifmo.ru:4815/programming-languages/assignment-image-rotation.git $ git fetch upstream $ git checkout master $ git merge upstream/master $ git remote remove upstream ```