用vcbuild在命令列編譯Visual Studio工程
最近升級到了VS2008,發現原來的ACE又不能用了,雖然我不大喜歡ACE,但由於工作需要不得不需要重新編譯ACE+TAO。公司配的破電腦編譯ACE還湊合著使,開著VS2008編譯TAO就有點力不從心了(工程太多,檔案太多),只聽cpu風扇在嘩啦啦的響,然後電腦就在那兒慢慢悠悠的跑(以前我都是在家裡把TAO編好了,再將二進位檔案拿到公司來用的)。
於是我便想到,直接在命令列下編譯,可能會快不少,可是找到找去,沒看到nmake可用的Makefile檔案,記得以前可用將VC的項目匯出為Makefile了,現在卻找不著了,網上查了一下,在VS2005以後的版本中,提供了一個vcbuild的工具,可以直接編譯Visual Studio的項目,解決方案。
vcbuild的命令格式如下:
VCBUILD [options] [project | solution] [config | $ALL]
Msdn中也沒有很多的介紹,只有一些options的說明,實際的例子如下:
vcbuild /rebuild dftj_tools_vc8.sln "Release|Win32"
由於"Release|Win32"中帶了一個'|'符號,所以不能直接用,需要用引號括起來。
這裡提供一下我寫的一個bat檔案,可以一次性編譯ACE+TAO(需要設定好環境變數和config.h)。
cd %ACE_ROOT%/ace
vcbuild /upgrade ACE_vc8.vcproj
vcbuild ACE_vc8.vcproj "Debug|Win32"
cd %ACE_ROOT%/apps/gperf/src
vcbuild /upgrade gperf_vc8.vcproj
vcbuild gperf_vc8.vcproj "Debug|Win32"
cd %TAO_ROOT%/TAO_IDL
vcbuild /upgrade TAO_IDL_vc8.sln
vcbuild TAO_IDL_vc8.sln "Debug|Win32"
cd %TAO_ROOT%/tao
vcbuild /upgrade tao_vc8.sln
vcbuild tao_vc8.sln "Debug|Win32"
cd %TAO_ROOT%/orbsvcs
vcbuild /upgrade orbsvcs_vc8.sln
vcbuild orbsvcs_vc8.sln "Debug|Win32"
另外,附上一個我在unix底下編譯ACE+TAO的shell指令碼。
#!/bin/csh
#install ace
cd $ACE_ROOT/ace;
rm -f config.h;
ln -s config-sunos5.9.h config.h;
cd $ACE_ROOT/include/makeinclude;
rm -f platform_macros.GNU;
ln -s platform_sunos5_g++.GNU platform_macros.GNU;
cd $ACE_ROOT/ace; gmake;
#install tao
cd $ACE_ROOT/apps/gperf/src; gmake;
cd $TAO_ROOT/TAO_IDL; gmake;
cd $TAO_ROOT/tao; gmake;
cd $TAO_ROOT/tao/orbsvcs; gmake;
通過命令列編譯,確實要簡潔很多,Visual Studio固然強大,看來也有其不靈活的地方。