Skip to content

Latest commit

 

History

History
77 lines (51 loc) · 4.34 KB

LABS.md

File metadata and controls

77 lines (51 loc) · 4.34 KB

Подготовка

Зайти в репозиторий Algorithms и сделать fork - собственную копию.

Затем скачать копию себе на компьютер и скомпилировать. Для сборки нужно иметь установленный cmake, он поддерживает как работу с Visual Studio, так и с компиляторами gcc и clang.

git clone https://github.com/<логин>/Algorithms
cd Algorithms
mkdir build
cd build
cmake ..
make

Требования к лабораторным работам

  • Решения отправляются с помощью Pull request

  • Должны проходить все релевантные тесты (проверяйте отчёт о тестировании при создании pull request)

  • Размер вектора должен домножаться на константу в случае его переполнения

  • Стек и очередь не должны ограничивать число сохраняемых значений

  • Дополнительные требования указаны в комментариях к заголовкам функций

Структура файлов CMakeLists.txt

Файлы CMakeLists.txt описывают состав проекта и правила его сборки с помощью утилиты cmake. В них можно создавать подключаемые библиотеки, исполняемые файлы и тесты.

Основное, что компилируется - это исполняемые файлы. Их сборка описывается с помощью директивы add_executable.

Библиотеки уже описаны в каталогах Library*:

add_library(LibraryC STATIC array.c list.c queue.c stack.c vector.c)
add_subdirectory(Tests)

Первая строчка описывает сборку подключаемой библиотеки LibraryC из соответствующих исходных файлов. Вторая строчка добавляет проекты из подкаталога Tests.

В подкаталоге Tests описаны тесты для базовой проверки работоспособности библиотеки:

add_executable(TestArrayC array.cpp)
target_include_directories(TestArrayC PUBLIC ..)
target_link_libraries(TestArrayC LibraryC)
add_test(TestArrayC TestArrayC)

Директива add_test указывает, какую программу и с какими аргументами запускать в этом тесте. Большинство тестов закомментированы, и по мере расширения библиотеки их нужно включать.

Все тесты запустить можно с помощью команды make test.

Добавление нового решения задачи

Добавить подкаталог и модифицировать основной файл CMakeLists.txt:

add_subdirectory(Lab1C)

В подкаталоге создать исходный файл с решением с CMakeLists.txt для его сборки:

add_executable(Lab1C lab1.c)
target_include_directories(Lab1C PUBLIC ../LibraryC)
target_link_libraries(Lab1C LibraryC)
add_test(NAME TestLab1C COMMAND Lab1C ${CMAKE_CURRENT_SOURCE_DIR}/input.txt)

Во второй и третьей строчках нужно ссылаться на используемый вариант библиотеки.

После этого в нужной библиотеке реализовать требуемый по условию контейнер, чтобы тесты и программа заработали правильно.

Последняя строка добавляет запуск разработанной программы в виде теста. При этом в качестве аргумента ей передаётся файл input.txt, который находится в каталоге с исходным кодом.

Проверить тесты локально можно с помощью команды ctest или make test, выполненной в подкаталоге build.