标签:ase 系统 接下来 库文件 lap 其他 dir 文件 和我
MicroStation的老版本是支持跨平台开发的,所以其开发架构并没有沿用微软的体系而是采用了类似Unix/Linux的开发体系,即利用制作文件来控制整个项目的生成过程。如果您在Unix或Linux下用GCC做过开发的话,相信会对这套系统有似曾相识之感。下图是一个完整的生成ma和dll的流程。
其中带有阴影线的块为源代码(有头文件、资源文件、类型文件和C++文件),需要我们手工编写;矩形块为一些执行程序,包括资源编译器、类型生成器、MDL库打包程序、C++源文件编译器、目标对象链接器等;其它块为生成的中间文件或最终文件。
MDL程序中的资源分命令表资源、对话框资源、消息资源、类型资源等,它们最终都生成到了ma(ma为MicroStation Application的缩写)这个文件中。这些都是Bentley公司特有的,必须按照规定的语法来写这些资源文件(可惜的是Bentley没有提供像VS中那样直观的可视化工具来生成这些资源文件,所以,对于刚接触MDL开发的人来说往往会感觉很繁琐)。而MDL中的C++源文件到动态链接库的生成过程和我们普通的C++文件编译和链接过程是相同的,都是调用的微软VS下的编译器cl.exe和链接器link.exe将cpp文件生成obj文件,再进而将obj文件(可能是多个)链接成一个dll文件。这两部分几乎独立的过程都是靠一个mke文件来控制的。
下面我们以上一章的mke文件为基础来详细解释这个制作文件的语法和今后工作中需要修改的一些地方。
在制作文件中存在如下6中需要掌握的语法:
$(mdlapps)$(appName).ma : $(appRscs) $(msg) > $(o)make.opt -o$@ $(appRscs) < $(RLibCmd) @$(o)make.opt ~time
这样的形式。由$(appRscs)生成$(appName).ma时,在所有mki(制作文件的头文件)中没有默认的规则,这里列出了显式的规则。最终调用的是命令$(RLibCmd)将多个rsc文件打包成了一个ma文件。$(RLibCmd)展开后其实就是SDK中bin文件夹下而rlib.exe。
【注】:在依赖下面空了一行而没有直接跟规则的,表示到mki中查找默认规则!!!
详细的mke文件语法可从SDK帮助文档MicroStationApi.chm的Creating a Makefile and Using the bmake Utility一节中查得。要想更深入地理解mke文件,还需要您读系统的mki文件,这些文件定义了许多系统内置的宏定义和规则。
接下来我们总结一下实用中你需要关心的几点,只要把握了这几点,今后新建mke文件和修改mke文件基本上就都可以了。
$(o)XXX$(oext) : $(baseDir)XXX.cpp $(baseDir)XXX.h
标签:ase 系统 接下来 库文件 lap 其他 dir 文件 和我
原文地址:https://www.cnblogs.com/JolinZH/p/12818410.html