Skip to content

Latest commit

 

History

History
51 lines (41 loc) · 6.05 KB

testing.md

File metadata and controls

51 lines (41 loc) · 6.05 KB

Тесты

Перед тем, как писать код, ознакомьтесь с правилами сдачи.

Сборка и запуск

Docker + VSCode (официально поддерживаемый вариант)

Это наиболее простой алгоритм заставить всё работать. Если вы хотите как-то поменять рабочее окружение, всё на вашей ответственности.

  1. Склонируйте локально этот репозиторий и ваш "форк" репозитория шаблонов решений в одну папку. В итоге рядом должны лежать две папки с соответствующими репозиториями, metaprogramming-course и metaprogramming-course-solutions. Не меняйте их имена, иначе конфиги полетят
  2. Установите vscode и docker
  3. Откройте vscode, установите расширения "Docker" и "Dev Containers"
  4. Внутри vscode выполните команду (Ctrl-Shift-P) "Open Workspace In Container" и выберете файл solutions.code-workspace из корня репозитория курса. На всплывшем варнинге нажмите "continue"
  5. vscode немножко подумает и откроет вам воркспейс с двумя репозиториями. Код пишем в одном, запускаем в другом. Все расширения установятся автоматом, должно работать "из коробки"
  6. Выберете тулкит clang на нижней панеле. В некоторых задачх его возможно придётся менять на gcc, но будем надеяться, что свежий шланг не такой вялый как год назад
  7. ВНИМАНИЕ: на нижней панеле слева есть значёк папочки, рядом с которым написано metaprogramming-course или solutions. Убедитесь, что на нём выбрано первое, иначе vscode будет пытаться билдить не ту папку. Флажка конфигурации для автоматизации этого выбора к сожалению пока не завезли.

Своё окружение + LSP (неофициальный вариант)

Вариант для мощных ребят, готовых делать всё самостоятельно. Ожидается, что вы знаете об LSP и способны самостоятельно подключить его к своему редактору.

Окружение через пакетный менеджер nix

  1. Создайте/выберите папку, в которой будете вести всю работу по курсу.
  2. Склонируйте локально 1) этот репозиторий и 2) ваш "форк" репозитория шаблонов решений в одну папку. В итоге рядом должны лежать две папки с соответствующими репозиториями, metaprogramming-course и metaprogramming-course-solutions. Не меняйте их имена, иначе конфиги полетят.
  3. Положите в папку файл с названием shell.nix, содержащий следующий nix-код:
    let
      pkgs = import <nixpkgs> {};
    in
      pkgs.clangStdenv.mkDerivation {
        name = "env";
        nativeBuildInputs = with pkgs; [ clang-tools cmake ninja gdb ];
        buildInputs = with pkgs; [ python3 ];
    }
  4. Создайте и войдите в nix-окружение при помощи команды nix-shell

LSP via clangd

Далее поэтапно описан вариант того, как можно заставить clangd понимать наш проект. Очевидно, папки можно было бы положить и в другие места.

  1. Заходим в metaprogramming-course/tasks
  2. Выполняем mkdir build && cd build && cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DTASK=? -DREPOSITORY_PATH=? -DNOCOMPILE=? (где ? надо заменить на соответствующие параметры, смотри ниже)
  3. Добавляем ссылку на сгенерированный compile_commands.json в папку задачи в репозитории с решениями (например, через ln -s)
  4. Открываем оттуда редактор и наслаждаемся жизнью

Конфигурация cmake

Все флаги для cmake при разработке выставляются в файле .vscode/settings.json в случае использования vscode и устанавливаются при запуске команды cmake .. в ручном режиме работы.

  • Cmake по-отдельности собирает каждую задачу. Чтобы поменять решаемую вами задачу, поменяйте название задачи N во флаге -DTASK=N. Пример: -DTASK=span
  • К некоторым задачам могут быть тесты, которые не должны компилироваться. Чтобы попытаться их "собрать", добавьте опцию -DNOCOMPILE=ON и компилируйте таргеты в названии которых есть слово nocompile.
  • Путь к репозиторию с решениями выставляется флагом -DREPOSITORY_PATH=..., но если вы используете контейнер и vscode, то всё должно работать само.