Skip to content

komissarovrodion21/lab04

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laboratory work IV

Данная лабораторная работа посвещена изучению систем автоматизации сборки проекта на примере CMake

$ open https://cmake.org/

Tasks

  • 1. Создать публичный репозиторий с названием lab04 на сервисе GitHub
  • 2. Ознакомиться со ссылками учебного материала
  • 3. Выполнить инструкцию учебного материала
  • 4. Составить отчет и отправить ссылку личным сообщением в Slack

Tutorial

#устанавливаем значение переменной GITHUB_USERNAME
$ export GITHUB_USERNAME=<имя_пользователя>

Настройки для соединения с репозиторием четвертой лабораторной работы

$ git clone https://github.com/${GITHUB_USERNAME}/lab03.git lab04 #клонирование репозитория lab03 в lab04
$ cd lab04 #выбираем директорию lab04
$ git remote remove origin #отключаемся от удаленного репозитория 3 лабораторной
$ git remote add origin https://github.com/${GITHUB_USERNAME}/lab04.git #подключаемся к удаленному репозиторию 4 лабораторной

Подготовка CMake

$ g++ -I./include -std=c++11 -c sources/print.cpp #добавляем print.cpp в среду обработки
$ ls print.o #проверяем файл print.o
$ ar rvs print.a print.o #создаем архив print.a с print.o
$ file print.a #проверяем файл print.a
$ g++ -I./include -std=c++11 -c examples/example1.cpp #добавляем example1.cpp в среду обработки
$ ls example1.o #проверяем наличие файла example1.o
$ g++ example1.o print.a -o example1 #собираем проект 
$ ./example1 && echo #запускаем проект и печатаем строку
$ g++ -I./include -std=c++11 -c examples/example2.cpp #добавляем example2.cpp в среду обработки
$ ls example2.o #проверяем файл example2.o
$ g++ example2.o print.a -o example2 #собираем проект 
$ ./example2 #запускаем
$ cat log.txt && echo #записываем в log.txt и выводим на экран содержимое файла

Удаление файлов

$ rm -rf example1.o example2.o print.o #удаляем объектные файлы
$ rm -rf print.a #удаляем архив
$ rm -rf example1 example2 #удаляем example1 и example2
$ rm -rf log.txt #удаляем log.txt

Работа с CMakeLists.txt

$ cat > CMakeLists.txt <<EOF
cmake_minimum_required(VERSION 3.0)#проверка версии CMake
project(print) #название проекта
EOF
$ cat >> CMakeLists.txt <<EOF
set(CMAKE_CXX_STANDARD 11) #подключение 11-го стандарта
set(CMAKE_CXX_STANDARD_REQUIRED ON) #активация стандарта
EOF
$ cat >> CMakeLists.txt <<EOF
add_library(print STATIC \${CMAKE_CURRENT_SOURCE_DIR}/sources/print.cpp) #создание статической библиотеки print
EOF
$ cat >> CMakeLists.txt <<EOF
include_directories(\${CMAKE_CURRENT_SOURCE_DIR}/include) #добавляем путь к include для заголовочных файлов
EOF
$ cmake -H. -B_build #сборка проекта в католог
$ cmake --build _build #сборка и линовка проекта

Создаем исполняемые файлы

$ cat >> CMakeLists.txt <<EOF

add_executable(example1 \${CMAKE_CURRENT_SOURCE_DIR}/examples/example1.cpp) #создаем файл с именем example1
add_executable(example2 \${CMAKE_CURRENT_SOURCE_DIR}/examples/example2.cpp) #создаем файл с именем example2
EOF

Линковка программ example1 и example2 с библиотекой print

$ cat >> CMakeLists.txt <<EOF

target_link_libraries(example1 print)
target_link_libraries(example2 print)
EOF

Собираем проект

$ cmake --build _build #запускаем сборку в каталоге _build
$ cmake --build _build --target print #сборка цели print
$ cmake --build _build --target example1 #Сборка example1
$ cmake --build _build --target example2 #Сборка example2
$ ls -la _build/libprint.a  
$ _build/example1 && echo #сборка и вывод на экран файла
hello
$ _build/example2 #сборка example2
$ cat log.txt && echo
hello

Скачиваем файл CMakeLists.txt из репозитория lab04

$ git clone https://github.com/tp-labs/lab04 tmp #копирование
$ mv -f tmp/CMakeLists.txt . #перемещение в tmp/CMakeLists.txt
$ rm -rf tmp #удаляем файл tmp

Настройки CMake

$ cat CMakeLists.txt #выводим файл
$ cmake -H. -B_build -DCMAKE_INSTALL_PREFIX=_install #сборка проекта с -DCMAKE_INSTALL_PREFIX
$ cmake --build _build --target install #сборка проекта print
$ tree _install #выводим в консоль структуру проекта

Отправка изменений в Github

$ git add CMakeLists.txt #добавляем CMakeLists.txt в подтвержденные файлы
$ git commit -m"added CMakeLists.txt" #создаем коммит 
$ git push origin master #выгружаем файлы

Report

$ cd ~/workspace/labs/
$ export LAB_NUMBER=04
$ git clone https://github.com/tp-labs/lab${LAB_NUMBER} tasks/lab${LAB_NUMBER}
$ mkdir reports/lab${LAB_NUMBER}
$ cp tasks/lab${LAB_NUMBER}/README.md reports/lab${LAB_NUMBER}/REPORT.md
$ cd reports/lab${LAB_NUMBER}
$ edit REPORT.md
$ gistup -m "lab${LAB_NUMBER}"

Links

Copyright (c) 2017 Братья Вершинины

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published