Skip to content

Instantly share code, notes, and snippets.

@TalkedDevotee
Last active January 14, 2018 15:37
Show Gist options
  • Save TalkedDevotee/cdc4f6a91b65b846fc81896aedc13231 to your computer and use it in GitHub Desktop.
Save TalkedDevotee/cdc4f6a91b65b846fc81896aedc13231 to your computer and use it in GitHub Desktop.
lab14

Laboratory work XIV

$ http://www.boost.org/doc/libs/1_64_0/doc/html/process.html

Задание

Написать программу на C++ для упрощения процесса сборки, установки и упаковки проектов основанных на конфигурационных файлах CMakeLists.txt.

Исполняемый файл программы должен иметь название builder и поддерживать следующие опции запуска:

$ ./builder --help
Usage: builder [options]
Allowed options:
  --help                    : выводим вспомогательное сообщение
  --config <Release|Debug>  : указываем конфигурацию сборки (по умолчанию Debug)
  --install                 : добавляем этап установки (в директорию _install)
  --pack                    : добавляем этап упаковки (в архив формата tar.gz)
  --timeout <count>         : указываем время ожидания (в секундах)

Примеры запуска программы с описанием эквивалентных запусков процессов программы CMake.

$ ./builder
code == 0
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Debug
$ cmake --build _builds
$ ./builder --config Release
code == 0
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Release
$ cmake --build _builds
$ ./builder --install
code == 0
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Debug
$ cmake --build _builds
$ cmake --build _builds --target install
$ ./builder --pack
code == 0
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Debug
$ cmake --build _builds
$ cmake --build _builds --target package
$ ./builder --install --pack
code == 0
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Debug
$ cmake --build _builds
$ cmake --build _builds --target install
$ cmake --build _builds --target package
$ ./builder --timeout 500
code == 0
$ cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=_install -DCMAKE_BUILD_TYPE=Debug
$ cmake --build _builds

Требования

  • 1. Для работы с процессами необходимо использовать библиотеку Boost.Process.

  • 2. В случае если время ожидания истекает, то программа завершает все дочерние запущенные процессы.

  • 3. Этап установки запускается, только в случае успешного завершения процесса сборки.

  • 4. Этап упаковки запускается, только в случаях успешного завершения процесса сборки и успешного завершения процесса установки.

  • 5. Стандартные потоки вывода дочерних процессов необходимо перенаправить в стандартный поток вывода родительского процесса исполняемого файла builder.

Ссылки

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment