$ 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.