天天看點

Widnows bat 編譯VS項目

因為項目需要,有時候直接采用bat檔案編譯整個項目,有很好的工具可用,就是devenv.

http://msdn.microsoft.com/en-us/library/a4sf02ac.aspx

根據msdn說明和不計其數的文章,可以很容易寫出自己的批處理指令檔案。

///設定要調用的devenv路徑

set _devenv="%VS110COMNTOOLS%..\..\Common7\IDE\devenv.com"

///設定log檔案名和路徑

set _log="%~dp0compileResults.log"

///目前路徑--%~dp0表示目前的bat檔案所在的路徑,此處是為了擷取PARENT路徑

set Directory= %~dp0

set Directory=%Directory:~0,-1%

for %%d in (%Directory%) do set ParentDirectory=%%~dpd

echo [�TE% %Time%] Start compile sequence >%_log% 

::echo Used compile configuration is %buildAnyCPU% >>%_log% 

set _solution_files="%ParentDirectory%test.sln"

echo _solution_files

set _project_file="%~dp0test.vcxproj" 

rem Start Debug Mode compile************************************************ 

///設定編譯參數,相當于項目中的宏定義,進而實作根據不同的宏編譯出不同的輸出檔案

此處類似于宏定義 #define PREFEFINETEST

///cl的用法參考msdn

set CL=/DPREDEFINETEST

echo %CL%

del %ParentDirectory�bug\*.*

%_devenv% %_solution_files% /build "Debug|Win32" /project %_project_file%   /Out %_log% 

if not %errorlevel% == 0 echo %_project_file% failed!   Error: %errorlevel% >>%_log% 

if %errorlevel% == 0     echo %_project_file% compiled successful >>%_log% 

rem If compile failed stop processing: 

::if not %errorlevel% == 0 pause 

::following code just get the parent path,to be changed 

echo [�TE% %Time%] Finished Debug compile sequence >>%_log%

///重新命名 

ren %ParentDirectory�bug\test.dll  testsuccess.dll

ren %ParentDirectory�bug\test.lib  testsuccess.lib

ren %ParentDirectory�bug\test.exp  testsuccess.exp

ren %ParentDirectory�bug\test.ilk    testsuccess.ilk

ren %ParentDirectory�bug\test.pdb  testsuccess.pdb

set CL=

echo %CL%

%_devenv% %_solution_files%  /build "Debug|Win32" /project %_project_file% /Out %_log% 

if not %errorlevel% == 0 echo %_project_file% failed!   Error: %errorlevel% >>%_log% 

if %errorlevel% == 0 echo %_project_file% compiled successful >>%_log% 

rem If compile failed stop processing: 

::if not %errorlevel% == 0 pause 

::following code just get the parent path,to be changed 

echo [�TE% %Time%] Finished Debug compile sequence >>%_log%

pause

連結:

擷取parent 路徑:

http://wiert.me/2011/08/09/batch-files-getting-directory-and-parent-directory/

http://jonausten.info/2011/11/02/windows-batch-file-find-parent-folder-name/

關于devenv的使用:

http://blog.sina.com.cn/s/blog_6234a2f00100fku8.html

CL的用法:

http://msdn.microsoft.com/zh-cn/library/kezkeayy.aspx

注意: 設定完之後如果需要取消 則直接

set CL=

即不指派即可.

繼續閱讀