dmake工具使用makefile.mk(dmake是openoffice编译工具)。
下面的部分描述一般的makefile.mk的文件结构:
- makefile.mk 文件的一般结构
- 生成的对象文件和库
- 生成的资源文件
- 生成的应用
- 生成的共享库和动态链接库
- makefile文件的内部结构
settings.mk
文件target.mk
文件
- 设置附加选项
- 额外目标的创建
- Add Targets to
all
- Adding Targets to a Makefile That Include Targets
- Declaring Dependencies Before Adding Targets
- Add Targets to
makefile.mk 文件的一般结构
makefile文件一般的结构如下:
PRJ=.. PRJNAME=SW TARGET=core .include:settings.mk # use the predefined macros .include:target.mk |
下面的表格描述在上面中用到的宏:
宏 | 函数描述 |
---|---|
PRJ | 此宏描述了现在模块的根目录的相对位置 |
PRJNAME | 此宏指定模块的名称,此名称必须是唯一的。 |
TARGET | 该宏指定一个标识符为当前目录。在模块内,该名称必须是唯一的,或者在输出文件或者solver树种文件名可能会发生冲突。 |
生成对象文件和库
下表描述了用于生成对象文件和库文件的宏。这些宏中的x表示在1到9之间的数字。这指定支持多达9个不同的库。
宏 | 函数描述 |
---|---|
OBJFILES=$(OBJ)$/file1.obj $(OBJ)$/file.obj | 你必须设置这个宏来从以下源文件生成相应的目标文件:
这个宏确保build过程创建编译器需要的对象文件,这些对象文件在输出树的obj或者slo目录下。在linux,Solaris和Mac OS X下,obj目录下创建假的.obj文件和.ofiles文件。 You can use these targets can be used to compile C and C++ sources found in different locations. See the 可以使用这些目标文件用来编译不同的位置C和C++源代码。文件的详细信息请参阅rules.mk。 build过程通常从目标文件的输出树的lib子目录下创建一个库。库的名称是变量$TARGET的值。在linux,Solaris和Mac OS X下,obj目录下仅创建假的.obj文件。 |
LIBTARGET=NO | 当不想编译一个库的时候可以设置此宏。 |
LIBxTARGET=$(LB)$/name.lib | 可以使用这种格式的多个库宏编译库,这些库不包含所有对象目录中的文件或合并不同的库。 |
LIBxARCHIV=$(LB)$/libname.a | 设置支持的静态链接库,linux,Solaris和 Mac OS X支持此宏。 |
LIBxOBJFILES | 指定绑定到链接库的目标文件。 |
LIBxFILES | 指定链接到链接库的更多文件(further files) |
生成的资源文件
下面的表格描述了用于产生资源文件的宏,德文语言资源文件默认编译。为支持其他的地区,环境变量UPDATER必须设置为YES,同时相应的地区环境变量RES_language也必须设置。
宏名称中的x代表1--9数字,这说明支持最多9个不同的资源文件。
宏 | 功能描述 |
---|---|
SRCFILES=file1.src file2.src |
|
SRSxNAMES 和SRSxFILES | 可以使用这些宏支持编译不同的srs文件。 |
RESLIBxNAME 和RESLIBxSRSFILES | 可以使用这些宏编译资dll文件。 |
下表显示的用于产生应用的宏。
宏 | 功能描述 |
---|---|
APPxTARGET | 表示应用的文件名。应用总是build到输出树的bin目录下。 |
APPxOBJS | 表示链接到应用程序的对象文件。不要用这个宏编译对象,因为它是不承认的依赖。 |
APPxSTDLIBS | 表示链接到应用的输入库。这些都是标准库,例如.a和.so文件。 |
APPxLIBS | 表示从相同的模块链接到应用的库。对UNIX,这些为对象文件的简单的文本列表,而不是正常的二进制库。 |
APPxDEF | 表示一个定义文件,如果在链接时,你使用一个,仅win32中使用。 |
APPxDEPN | 表示依赖。 |
APPxRES | 表示系统资源,仅在win32中。 |
APPxICON | 表示应用图标,仅在win32中。 |
生成的共享库和动态链接库
下面表格描述用于产生恭喜库或者动态链接库(DLLS)的宏。
宏 | 功能描述 |
---|---|
SHLxTARGET | 表示共享库的文件名。 在win32中,共享库总是编译为
|
UPD and DLLPOSTFIX | 提供平台和发布独立的应用: 在windows NT上,bla$(UPD)$(DLLPOSTFIX) 在发布599的时候会生成 bla599mi.dll |
SHLxOBJS | 指定创建库的对象文件。 |
SHLxSTDLIBS | 导入库链接 |
SHLxLIBS | 指定的库从相同模块到放到共享库 |
SHLxDEF | 指定的导出符合文件,仅仅支持win32系统。 |
SHLxDEPN | 指示依赖 |
SHLxRES | 使用此宏的系统依赖资源 |
SHLxIMPLIB | 指定创建的导入文件,仅仅支持win32平台。 |
DEFxNAME | 指定定义文件的名称,通常是一个类似的共享库的名称。 |
DEFxDEPN | 指示定义文件依赖。 |
DEFLIBxNAME | 指定库名称解析的符合,仅仅支持win32平台。 |
DEFxDES | 定义文件的说明 |
DEFxEXPORTyy | 符号名称。y在宏中的范围为1-99。 |
DEFxEXPORTFILE | 文件导出的符合。 |
下略,有空继续翻译。
原文地址:http://www.openoffice.org/tools/build_env_mkfiles.html