2011-01-29 37 views
2

我正在用C++編寫一個應用程序來完成大學任務,我需要將源文件壓縮爲一個zip文件並將它們發送給我的主管進行評估。問題是我在一個單獨的目錄中有一個「工具箱」,其中包含一個自定義命名空間,其中包含許多函數和類,我發現自己正在爲每個賦值重寫,比如錯誤/完整性檢查用戶的輸入。打包來自我的計算機的源文件

是否有一個工具可以創建一個壓縮文件,其中包含存儲在不同位置的所有源文件?我的編譯器能夠遵循我的序言中指定的目錄,所以我想有一個工具可以實現這一點。我正在Linux上用C++編寫這個應用程序,並且更喜歡使用CLI工具,但如果這就是GUI的話,它將適用於GUI。

回答

1

可能有,但最簡單的方法是編寫一個簡短的腳本,將所有內容複製到臨時目錄中,然後將該目錄壓縮。

1

您可以在依賴模式下使用gcccpp。例如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++源文件,所以你應該在這方面沒有問題。

但是,您應該注意提供與正常編譯時相同的預處理器選項。

編輯:

由於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

zip命令將多個文件作爲輸入。所以,你可以做

拉鍊project.zip my_project_dir my_toolbox_dir

如果你只想源文件,你可以做

拉鍊project.zip my_project_dir my_toolbpx_dir/*。CPP

相關問題