用vcbuild(msbuild)在命令行编译Visual Studio工程
用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固然强大,看来也有其不灵活的地方。
/*********************************************************************************************************/
在使用vcbuild编译程序,出现错误,提示是某个库文件是用比较老的编译器生成的。使用msbuild 可以顺利通过编译。
msbuild xxxx.sln /t:build (/t为/target 缩写)