Ant 是Java的一个编译工具,但也可以用于编译VC工程。因为VC支持命令行编译,所以Ant只要调用VC命令行编译程序就可以了。
vc6与vc7.0以上的命令行程序不一样,vc6是MSDEV.COM,vc7是devenv.com。把{ vc的安装目录 }/Common/MSDev98/Bin 加入环境变量Path,以便Ant能直接调用vc命令行程序。
Ant默认调用的配置文件是build.xml, 你也可以用命令 "ant -f xx.xml" 来指定配置文件。
-
编译一个工程
下面是一个build.xml的例子:
- <?xml version="1.0"?>
- <project name="xxxx" default="main">
- <!-- 编译工程 -->
- <target name="main" >
- <echo message="complie, wait..." />
- <exec executable="MSDEV.COM" failonerror="true" >
- <arg value="../src/xxxx.dsw"/>
- <arg value="/rebuild" />
- <arg value="/make" />
- <arg value="xxx - Win32 Unicode Release" />
- <arg value="/out" />
- <arg value="../buildlog.txt" />
- </exec>
- </target>
- </project
上面例子的 "编译工程" 的 exec 节点,表示调用程序"MSDEV.COM"; 后面跟着的"arg"节点,表示被调用程序的参数。其执行的命令就是
MSDEV.com "../src/HMI.dsw" /rebuild /make "HMIUI - Win32 Unicode Release" /out "../buildlog.txt"
如果你有多个VC工程,每个工程都要写一段上面的配置,那是一件很麻烦的事。我们可以使用Ant的"antcall" 来精简配置。例子如下:
- <?xml version="1.0"?>
- <project name="xxxx" default="main">
- <!-- 编译所有的插件 -->
- <target name="buildAll">
- <antcall target="buildone">
- <!-- 工程路径 -->
- <param name="project.file" value="./src/xxxx/xxxx.dsp" />
- <!-- 工程名称 -->
- <param name="project.name" value="xxx" />
- </antcall>
- </target>
- <!-- 编译一个VC工程 -->
- <target name="buildone">
- <!-- 清理工作 -->
- <echo message="clean ${ project.file } ..." />
- <exec executable="MSDEV.COM">
- <arg value="${ project.file }" />
- <arg value="/clean" />
- <arg value="/make" />
- <arg value="${ project.name } - Win32 Unicode Release" />
- </exec>
- <!-- 编译 -->
- <echo message="complie ${ project.file }, wait..." />
- <exec executable="MSDEV.COM" failonerror="true">
- <arg value="${ project.file }"/>
- <arg value="/rebuild" />
- <arg value="/make" />
- <arg value="${ project.name } - Win32 Unicode Release" />
- </exec>
- </target>
- <target name="main" depends="buildAll">
- </target>
- </project>
上面的例子中的一个"antcall" 节点 表示一个VC工程,它将调用"buildone" target 来编译该工程。