在进行MicroStation的二次开发中,经常会对mke文件进行修改。让我们来看一下mke文件中的具体用法
1. 几个关键的用法
# 注释
= 宏定义
$ 宏展开
\ 续行符
/ 文件路径分割符
2. 几个必须包含
开头要加 %include mdl.mki
(系统头文件)
结尾要加 %include dlmlink.mki
(调用文件) 其后必须加空行,否则会报错
3. 几个解释
appObjs = $(o)$(appName)$(oext)
$(o)
---------------创建文件路径
$(appName)
-------文件名
$(oext)
-----------.obj后缀名
always:
~mkdir $(o)
~mkdir $(rscObjects)
~mkdir $(reqdObjs)
当不存在时,创建文件夹
#--------------------------------------------
# Create command table and header file
#--------------------------------------------
#$(baseDir)$(appName)cmd.h : $(baseDir)$(appName)cmd.r
#$(o)$(appName)cmd.rsc : $(baseDir)$(appName)cmd.r
当给应用添加命令时,用于创建cmd文件的header和rsc文件
以:分割,:前面的文件依赖于:后面的文件
#---------------------------------------------------------------
# Builds any necessary CODE modules and link them to DLL
#---------------------------------------------------------------
$(o)$(appName)$(oext) : $(baseDir)$(appName).cpp
每增加一个cpp文件,就要增加一行
最后来看一下完整mke代码
#---------------------------------------------------------------
# MstnCE HelloWorld.mke
#---------------------------------------------------------------
PolicyFile = MicroStationPolicy.mki
DEFAULT_TARGET_PROCESSOR_ARCHITECTURE=x64
appName = HelloWorld
appObjs = $(o)$(appName)$(oext)
appRscs = $(o)$(appName).rsc
baseDir = $(_MakeFilePath)
mdlLibs = $(MSMDE)library/
%include mdl.mki
#---------------------------------------------------------------
# Create needed output directories if they don't exist
#---------------------------------------------------------------
always:
~mkdir $(o)
~mkdir $(rscObjects)
~mkdir $(reqdObjs)
#---------------------------------------------------------------
# Define macros for files included in our link and resource merge
#---------------------------------------------------------------
DLM_NO_SIGN = 1
DLM_OBJECT_DEST = $(o)
DLM_NAME = $(appName)
DLM_OBJECT_FILES = $(appObjs)
DLM_NO_DLS = 1
DLM_NO_DEF = 1
DLM_NOENTRY = 1
DLM_NO_MANIFEST = 1
DLM_DEST = $(mdlapps)
LINKER_LIBRARIES = $(mdlLibs)bentley.lib \
$(mdlLibs)mdlbltin.lib \
$(mdlLibs)BentleyGeom.lib \
$(mdlLibs)DgnPlatform.lib
#--------------------------------------------
# Create command table and header file
#--------------------------------------------
#$(baseDir)$(appName)cmd.h : $(baseDir)$(appName)cmd.r
#$(o)$(appName)cmd.rsc : $(baseDir)$(appName)cmd.r
#---------------------------------------------------------------
# Generate resource files
#---------------------------------------------------------------
$(o)$(appName).rsc : $(baseDir)$(appName).r
#---------------------------------------------------------------
# Generate MA
#---------------------------------------------------------------
$(mdlapps)$(appName).ma : $(appRscs)
$(msg)
> $(o)make.opt
-o$@
$(appRscs)
<
$(RLibCmd) @$(o)make.opt
~time
#---------------------------------------------------------------
# Builds any necessary CODE modules and link them to DLL
#---------------------------------------------------------------
$(o)$(appName)$(oext) : $(baseDir)$(appName).cpp
%include dlmlink.mki