从我的计算机周围打包源文件

时间:2011-01-29 23:13:32

标签: c++ linux

我正在用C ++编写一个用于大学作业的应用程序,我需要压缩zip文件中的源文件并通过电子邮件发送给我的主管进行评估。问题是我有一个'工具箱'在一个单独的目录中,该目录包含一个自定义命名空间,该命名空间包含许多函数和类,我发现自己为每个作业重写,例如错误/健全性检查用户的输入。

是否有工具可以创建包含存储在不同位置的所有源文件的压缩文件?我的编译器能够遵循我的序言中指定的目录,所以我想在那里会有一个工具可以做到这一点。我在Linux上用C ++编写这个应用程序,并且更喜欢使用CLI工具,但如果有的话,它将适用于GUI。

3 个答案:

答案 0 :(得分:1)

可能有,但最简单的方法是编写一个简短的脚本,将所有内容复制到一个临时目录中,然后压缩该目录。

答案 1 :(得分:1)

您可以在依赖模式下使用gcccpp。例如,cpp -MM为C文件生成Makefile规则:

$ 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 ++源文件,所以你应该没有问题。

但是,您应该注意提供与正常编译时相同的预处理器选项。

编辑:

由于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选项处理每个源文件。

答案 2 :(得分:1)

zip命令将多个文件作为输入。所以你可以做到

zip project.zip my_project_dir my_toolbox_dir

如果您只想要源文件,可以

zip project.zip my_project_dir my_toolbpx_dir / * .cpp