Мне нужно архивировать * .cpp файлы в определенном каталоге внутри gzipped tarball. Мне нужно, чтобы это происходило во время выполнения в качестве средства документирования того, какой код (например, какие версии файлов исходного кода) вывел определенный набор результатов из программы.Перезапись этой простой функции с использованием C++ STL/Boost вместо вызовов system()?
Итак, я написал следующую функцию. Обычно он работает нормально, но у него есть ввернутый один или два раза в прошлом. Я не могу вспомнить, что произошло, точно, но я помню, что это связано с использованием system()
вместо фактического удаления и архивирования файлов в программе на C++.
void saveSourceCode_TarGZ(string destinationFile) {
system(("rm -f " + destinationFile).c_str());
system(("rm -f " + destinationFile + ".gz").c_str());
system(("tar -cvf " + destinationFile + " ./*.cpp").c_str());
system(("gzip " + destinationFile).c_str());
}
Первые две строки в указанном выше функция просто удалить уже существующий файл с таким же именем, как архив я пытаюсь создать (destinationFile
), если оно существует. Последние две строки, соответственно, создают tarball всех файлов .cpp в текущем рабочем каталоге и gzip для этого tarball.
Как я могу переписать эту функцию с помощью библиотек STL или Boost?
Я очень неопытен в использовании библиотек Boost, и я являюсь полным невежеством, когда дело касается управления файловой системой в C++.