学习ACE也是很久以前的事情了,但是一直没有接触到MPC,最近学习CORBA,使用了TAO作为CORBA库,在使用的过程中简单接触了一下MPC,但是由于MPC的相关文档都是英文的,对于文不好的人是一种折磨(包括本人),因此有了翻译一个MPC文档的想法,原本在早前是看到一个更相信的MPC帮助文档的,但是学习的时候却怎么也找不到了(如果有谁找到了,请告诉我,谢谢),因此我翻译的是基于1.4a的(原文在http://downloads.ociweb.com/MPC/html/MakeProjectCreator.html),如果有什么不足之处,欢迎大家指出来。同时也欢迎大家转载,不过希望能注明出处ACE开发者。
1. MPC介绍
MPC是一个用来从mpc文件中生成不同编译工具所支持的项目文件的工具。MPC项目文件是构造单一编译目标的源文件的集合。MPC使用平台特定的输入和mpc文件一起生成不同编译工具所支持的项目文件,如:makefile, Visual C++工作区和项目文件,Visual Studio解决方案和项目文件,等。MPC同特定的项目文件相比有如下优点:能够最大限度的减少需要维护的项目文件数量;同时支持项目继承;语法简单,易于维护;等。
2. 使用MPC
一个MPC项目由一系列描述不同编译目标(如库和可执行文件)的参数集合,这些参数包括目标名称、包含路径、源文件、头文件等。一个或多个MPC项目可以定义在一个单独的mpc文件中。而MPC工作区是一系列项目的集合。
项目可以通过mpc.pl脚本来生成,一个或多个mpc文件可以通过命令行选项来传递到mpc.pl脚本进行处理。如果没有mpc文件被指定,则脚本会自动搜索项目相关文件(如源文件、头文件等)并组合成一个项目。
下图显示了如何通过mpc.pl生成项目文件:
(本来想上传附件的,结果没法上传,请大家参考原文图片)
如果需要生成工作区,则必须使用mwc.pl脚本来生成。该脚本会通过mpc文件生成相应的项目并基于这些项目创建一个工作区。如果没有mwc文件传递到脚本,则脚本会在当前目录以及所有子目录下搜索所有的mpc文件来组合成一个工作区。对于基于make的项目类型(如:make、gnumake、bmake、nmake),工作区是一个顶层的makefile;而对于如Visual Studio一样的基于GUI的工具,工作区则是集合了所有项目的一个顶层工作区文件。
下图显示了如何通过mwc.pl生成工作区文件:
(本来想上传附件的,结果没法上传,请大家参考原文图片)
2.1 支持的生成工具
MPC可以生成多个生产工具所支持的项目和工作区。表1列出了MPC支持的类型(由MPC和MWC的-type命令行选择指定)以及对应的生成工具(原文与此有些区别,我使用的是ACE 5.6中支持的类型,?表示不确定,空表示不清楚,有知道的请告诉我,谢谢):
表1. 支持的生成工具