Упаковка исходных файлов со всего моего компьютера - PullRequest
2 голосов
/ 30 января 2011

Я пишу заявку на C ++ для университетского задания, и мне нужно сжать исходные файлы в zip-файл и отправить их своему руководителю для оценки.Проблема в том, что у меня есть «набор инструментов» в отдельном каталоге, который содержит настраиваемое пространство имен, которое содержит множество функций и классов, которые я переписывал для каждого назначения, например, проверка на наличие ошибок / здравомыслие при проверке ввода пользователя.1002 * Существует ли инструмент, который создаст сжатый файл, содержащий все исходные файлы, которые хранятся в разных местах?Мой компилятор может следовать директориям, указанным в моей преамбуле, поэтому я думаю, что для этого найдется инструмент.Я пишу это приложение для Linux, на C ++ и предпочитаю инструмент CLI, но остановлюсь на GUI, если это то, что есть.

Ответы [ 3 ]

1 голос
/ 30 января 2011

Вы можете использовать gcc или cpp в режиме зависимости. Например, cpp -MM создает правила Makefile для файлов C:

$ cpp -MM abstract.c
abstract.o: abstract.c differ.h overrides.h debug.h settings.h abstract.h \
 abstract/posix.h abstract/linux.h misc.h command.h queue.h list.h \
 storage.h sqlite3.h

Вы можете проанализировать этот вывод, чтобы получить список включенных файлов. cpp прекрасно работает и с исходными файлами C ++, поэтому у вас не должно возникнуть проблем в этом направлении.

Однако вы должны позаботиться о предоставлении тех же опций препроцессора, что и при обычной компиляции.

EDIT:

Поскольку zip обновляет файлы с одинаковыми именами в архиве, вы можете использовать что-то вроде этого:

$ for i in *.c *.cc; do cpp -MM "$i"; done | tr ' ' '\n' | sort -u | grep -v ':$' | xargs -r zip test.zip
updating: test2.cc (deflated 61%)
  adding: greater.c (deflated 38%)
  adding: test.cc (deflated 61%)
  adding: yyy.h (stored 0%)
  adding: zzz.h (stored 0%)
$ for i in *.c *.cc; do cpp -MM "$i"; done | tr ' ' '\n' | sort -u | grep -v ':$' | xargs -r zip test.zip
updating: test2.cc (deflated 61%)
updating: greater.c (deflated 38%)
updating: test.cc (deflated 61%)
updating: yyy.h (stored 0%)
updating: zzz.h (stored 0%)

Хранит файлы, включенные в указанные исходные файлы, вместе с самими исходными файлами в архиве zip. Обратите внимание, что вы должны позаботиться о том, чтобы каждый исходный файл обрабатывался с правильными параметрами cpp.

1 голос
/ 30 января 2011

Команда zip принимает несколько файлов в качестве входных данных. Так что вы могли бы сделать

zip project.zip my_project_dir my_toolbox_dir

Если вы хотите просто исходные файлы, вы можете сделать

zip project.zip my_project_dir my_toolbpx_dir / *. Cpp

1 голос
/ 30 января 2011

Возможно, есть, но проще всего написать короткий скрипт, который копирует все во временный каталог, а затем архивирует этот каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...