以前每天到公司的都有一系列很繁瑣的東西要做:開工程文件夾、SVN更新、用CMake更新工程文件、用VS開sln、編譯。。。這些動作都是有先後順序的,前者完成之後才能開始後者,這樣就浪費的大量時間在等待上,如果能夠一鍵搞定就好了。可以說是要偷懶,也可以說是要提高工作效率,自然就會去想辦法讓這一系列的動作自動化,由於是windows平臺,就考慮用bat批處理來搞定。
我的結構是:OneKeyDone.bat 爲主要執行文件,裏面分別調用Update.bat、Generate.bat、OpenVS.bat、OpenDir.bat四個批處理文件,每次只需要雙擊OneKeyDone.bat就可以完成所有動作。當然,我們也要保留其他功能的獨立性,比如我編輯的工程,直接執行Generate.bat去更新工程就夠了。下面是實現:
--------------------------------------------- OneKeyDone.bat ------------------------------------------
rem "rem" 標示的一行爲註釋行,“echo off/on” 打開或關閉提示符,“color 2f”設置前景色和背景色,call 調用另一個批處理
@echo off
color 2f
call ./Update.bat
call ./Generate.bat
call ./OpenVS.bat
call OpenDir.bat
@echo on
--------------------------------------------- Update.bat ------------------------------------------------
@echo off
color 2f
rem 設置各個路徑變量
@set svn_bin=C:\Program Files\TortoiseSVN\bin
@set trunk_dir=E:\Code\trunk
@set bin_dir=E:\Code\trunk\bin
rem echo 後的內容會被打印到控制檯上
@echo ========================== Update trunk =========================
rem 關於SVN更新命令行的參數請參閱有關文檔,這裏command:update表示讓SVN更新,也可以Merge、checkout等
rem /path:"%trunk_dir%" 設置更新路徑
rem 設置/closeonend:2表示更新沒有問題(沒衝突等)直接關閉更新對話框,否則等待用戶處理
"%snv_bin%"\TortoiseProc.exe\command:update /path:"%trunk_dir%" /notempfile /closeonend:2
@echo ========================== Update bin ===========================
"%svn_bin%"\TortoiseProc.exe\command:update /path:"%bin_dir%" /notempfile /closeonend:2
@echo on
---------------------------------------------- Generate.bat -------------------------------------------------
@echo off
color 2f
@set trunk_dir=E:\Code\trunk
pushd %trunk_dir%
md %trunk_dir%\build
cd %trunk_dir%\build
rem cmake -G 的選項指定要生成的工程類型,可以是各個VS的版本,也可以是NMake等
rem -DBINARY_DIR=%trunk_dir% 定義了一個宏變量,這是CMakeList.txt文件編寫時的一個設置,其他用戶可不管
cmake -G "Visual Studio 11" %trunk_dir% -DBINARY_DIR=%trunk_dir%
@echo on
----------------------------------------------- OpenVS.bat ----------------------------------------------------
@echo off
color 2f
@set trunk_dir=E:\Code\trunk\build
@set vc_dir=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
@set sln_name=E:\Code\trunk\build\All.sln
rem VS的路徑有空格,需要用雙引號包含,否則批處理會把空格處作爲一句命令結束,%vs_dir%表示引用前面定義的變量值
"%vs_dir%"\devenv.exe "%sln_name%"
@echo on
------------------------------------------------- OpenDir.bat -------------------------------------------
@echo off
color 2f
@set trunk_dir=E:\Code\trunk
@set bin_dir=E:\Code\trunk\bin
@start explorer "%trunk_dir%"
@start explorer "%bin_dir%"
@echo on
好了,有了這些批處理,只要打開電腦後,直接雙擊OneKeyDone.bat就可以完成這些動作,這期間你可以放心的乾點別的事。當然如果更新有衝突,則會等待你的處理。當然,如果有需要,還可以進行拓展,比如版本發佈機就可以搞一個 SVN更新--VS編譯--SVN版本提交 這樣一個命令。