Шаблон для разработки и тестирования программ на С++ по предмету "Алгоритмы и структуры данных"

Работа с системой автоматической сборки cmake

Шаг 1. Создать папку build в вашем локальном репозитрии.

Шаг 2. Перейти в папку build и вызывать из неё командную строку (cmd).

Шаг 3. Выполнить команду, соотвутсвующую вашей версии Visual Studio:

cmake -G "Visual Studio 17 2022" ..

cmake -G "Visual Studio 16 2019" ..

cmake -G "Visual Studio 15 2017" ..

Примечание. Здесь .. - поднятие на уровень вверх. В качестве данного аргумента должен быть указан путь до основного cmake-листа. Так как мы спустились от основного CMakeLists.txt в папку build, то можно указать путь именно таким коротким способом. Если вы создаёте папку build в каком-то другом месте, не забудьте указать корректный путь.

Шаг 4. В папке build появится сборка проекта. Запускаем как обычно sln-файл и пишем код.

При необходимости добавить еще один проект:

  • создать подпапку (по названию приложения или по названию библиотеки),
  • добавить необходимые файлы (.h, .hpp, .cpp, .c),
  • создать подходящий под ситуацию CMakeLists.txt в этой папке,
  • добавить сразу файл(-ы) под тесты в папку tests при необходимости,
  • внести в основной CMakeLists.txt еще одну папку для сборки (порядок для сборки для данного шаблона играет роль!).

Примечание 1. Старайтесь придерживаться одного стиля именования!

Примечание 2. При создании библиотек у вас не может быть только хедер (.h, .hpp), даже если вся реализация сидит в нём. Файл .cpp / .c обязан быть, иначе возникнут ошибки при сборке.

Основные команды для git

git clone ссылка-до-ВАШЕГО-репозитория

git branch имя-рабочей-ветки

git checkout имя-рабочей-ветки

git checkout -b имя-рабочей-ветки

git add .

git add -u .

git status

git commit –m "fix problem with magic numbers, add comments"

git push origin имя-рабочей-ветки

git push –u origin имя-рабочей-ветки

Замечание. Если сделать git push ветки без ключа -u, git не свяжет локальную ветку с веткой удалённого репозитория. Смысл использовать ключ -u есть только при пуше новых веток, для существующих (связанных с удалёнными) веток каждый раз перезаписывать связку необязательно.

Обработка исключений

Исключение - это ситуация, которая не предусмотрена стандартным поведением программы.

Полезная статья с примерами - https://evileg.com/ru/post/289/

Assert — это специальная конструкция, позволяющая проверять предположения о значениях произвольных данных в произвольном месте программы.

Статья с примерами - http://cppstudio.com/post/946/