因為項目需要,有時候直接采用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=
即不指派即可.