项目参数
基础参数
以下列表是所有project.makefile的通用列表。
重要
- 项目需要包含在
MCO_PRJ_LIST
和至少一个其他PRJ_
项目中。 - 只要项目的代码适合该项目,就可以将该项目包含在所需的任意多个
PRJ_
中。 +=
操作符用于包含。:=
操作符用于赋值。由于构建过程为异步,make程序以外的赋值无法预测执行顺序。
MCO_PRJ_LIST
需要将项目包含到MCO_PRJ_LIST
中,以使构建系统意识到它。此列表用于为全部生成和清除所有操作生成全局范围的操作代码。
示例:
MCO_PRJ_LIST += PROJECT_NAME
PRJ_HOST_EXECUTABLE
此列表包含生成主机端可执行文件的所有项目,包括mcocomp
、sql2mco
主机端程序。
示例:
PRJ_HOST_EXECUTABLE += PROJECT_NAME
PRJ_TARGET_EXECUTABLE_DPTR
PRJ_TARGET_EXECUTABLE_OFFS
这些列表包括目标端可执行文件,如regunlock
程序和xSQL。项目需要根据其含义放入DPTR-
或OFFS-
列表中,或者同时放入两者中。
示例:
PRJ_TARGET_EXECUTABLE_DPTR += PROJECT_NAME
PRJ_TARGET_EXECUTABLE_OFFS += PROJECT_NAME
PRJ_TARGET_LIBRARY_DPTR_DYNAMIC
PRJ_TARGET_LIBRARY_OFFS_DYNAMIC
PRJ_TARGET_LIBRARY_DPTR_STATIC
PRJ_TARGET_LIBRARY_OFFS_STATIC
这些列表包括所有目标端库项目。如果要将库构建为静态代码容器,则需要将其添加到STATIC-
列表中,并将动态加载模块添加到DYNAMIC-
列表中。DPTR-
和OFFS-
列表将库的版本分开。在大多数情况下,一个库项目将包含在所有四个列表中,但在某些情况下,只需要动态版本(例如提要处理程序模块),或者只有off版本有意义(例如。McOvtdsk库)。
示例:
PRJ_TARGET_LIBRARY_DPTR_DYNAMIC += PROJECT_NAME
PRJ_TARGET_LIBRARY_OFFS_DYNAMIC += PROJECT_NAME
PRJ_TARGET_LIBRARY_DPTR_STATIC += PROJECT_NAME
PRJ_TARGET_LIBRARY_OFFS_STATIC += PROJECT_NAME
PRJ_TARGET_CLASS
这个列表定义了作为Java类的项目。这些项目由Java编译器处理成单独的类文件。
示例:
PRJ_TARGET_CLASS += PROJECT_NAME
PRJ_TARGET_JAR
此列表中的项目生成Java代码库JAR文件。这些项目使用Java编译器进行编译,然后与jar实用程序放在一起。
示例:
PRJ_TARGET_JAR += PROJECT_NAME
PRJ_TARGET_ANALYZE_ONLY
这是一份非常特别的名单。构建系统处理列表上的项目,从项目属性中生成构建属性,但不生成生成项目产品的代码。生成的构建属性可用于某些需要特殊过程来构建其产品的项目。
示例:
PRJ_TARGET_ANALYZE_ONLY += PROJECT_NAME
PRJ_CUSTOM
这是另一个特殊的项目清单。此列表中的项目需要使用项目的makefile中定义的特殊自定义过程来构建。
其他PRJ_
参数需要为项目设置,如PRJ_PROJECT_NAME_PRODUCTS
, PRJ_PROJECT_NAME_PRODUCT_DIRS
, PRJ_PROJECT_NAME_INTERMEDIATE_DIRS
和PRJ_PROJECT_NAME_BUILD_LOGS
。在大多数情况下,项目需要将其构建过程添加到PRJ_GENERATE_CUSTOM_RULES
列表中。
示例:
PRJ_CUSTOM += PROJECT_NAME
PRJ_GENERATE_CUSTOM_RULES += <project-name-build-proc>
PRJ_P_NAME_PRODUCTS :=$(addprefix $(MCO_PRODUCT_ROOT)/target/bin/<dir>,
PROJECT_NAME.so PROJECT_NAME_debug.so)
PRJ_P_NAME_PRODUCT_DIRS :=$(MCO_PRODUCT_ROOT)/target/bin/<dir>
PRJ_P_NAME_INTERMEDIATE_DIRS:=$(subst $(MCO_ROOT),$(MCO_BUILD_ROOT),
$(PRJ_P_NAME_DIR)/build-$(MCO_TARGET_ARCH_SFX))
常用参数
以下参数定义了基本的项目属性,需要包含在每个项目文件中。
提示
以下使用“demo_project”为_PROJECT_NAME_
参考,使用前请自行替换。
PRJ_PROJECT_NAME_DIR
此列表将项目的位置定义为绝对路径。所有项目都通过$(call mco_project_dir)
初始化这个属性。这个构造计算出makefile.project-file
的路径。项目文件的位置。
示例:
PRJ_demo_project_DIR:=$(call mco_project_dir)
PRJ_PROJECT_NAME_TAGS
该列表为项目分配标签(作为空格分隔的列表)。使用标签可以在项目中定义逻辑组(通过特性、特定于操作系统等)。构建系统能够根据用户请求或自动启用/禁用组。
示例:
PRJ_demo_project_TAGS:=sample core
PRJ_PROJECT_NAME_SRC
此列表定义了一组项目源代码文件(作为空格分隔的列表)。它可能包括C/C++文件、头文件和Java文件。每个文件必须由其名称和绝对文件系统路径指定。构建系统执行 $(call mco_project_file, <file1.c> <file2.cpp> ... <fileN.h>)
有助于于确定文件位置。
示例:
PRJ_demo_project_SRC:=$(call mco_project_file,oidsize.h main.c) $(MCO_SAMPLES_COMMON_DIR)/common.c
警告
以下常用参数将重写默认的项目构建内容。
PRJ_PROJECT_NAME_DEFINES
以<define-name>[=<define-value>]
的形式为项目添加特殊定义。构建脚本将自动添加必要的编译器声明指令。
示例:
PRJ_demo_project_DEFINES:=MCOEWS_BUILD_RUNTIME MCO_HTTP_OVERRIDE_CONFIG
MCO_HTTP_CGI MCO_SECURITY_NONE MCO_HTTP_CONNECTION_USER_DATA
PRJ_PROJECT_NAME_INCLUDE
另外还包括作为目录路径的项目位置。构建脚本将添加必要的编译器include路径声明指令。
示例:
PRJ_demo_project_INCLUDE:=$(MCO_ROOT)/host/mcocomp
PRJ_PROJECT_NAME_DEBUG
强制将项目链接到库的调试版本。
null - 默认(相当于在命令行中为调试库设置
MCO_DEBUG=on
选项)YES - 无条件地设置调试库
示例:
PRJ_demo_project_DEBUG:=YES
PRJ_PROJECT_NAME_F_USE_DYNAMIC_LIBRARIES
强制将项目与eXtremeDB库的动态版本链接。
- null - 默认
- YES - 无条件设置动态库
示例:
PRJ_demo_project_F_USE_DYNAMIC_LIBRARIES:=YES
PRJ_PROJECT_NAME_ADDITIONAL_LIBRARIES
向项目的链接添加特殊库。该脚本将为编译器添加所有必要的库指令。
示例:
PRJ_demo_project_ADDITIONAL_LIBRARIES:=luajit
PRJ_PROJECT_NAME_SKIP_AUTO_BUILD
从自动生成序列中排除此项目。项目构建过程需要由另一个项目发起(将项目的产品指定为另一个项目的必需文件)。
- null - 默认
- YES - 将此项目从自动生成列表中排除
示例:
PRJ_demo_project_SKIP_AUTO_BUILD:=YES
PRJ_PROJECT_NAME_BUILD_SFX
这为产品中间目录定义了一个自定义后缀。适用于具有自定义构建过程的项目。
PRJ_PROJECT_NAME_RESULT_NAME_BASE
覆盖项目产品的名称。在生成产品文件名时,构建脚本将使用此值而不是<project-name>
。脚本将根据项目的产品性质添加所有必要的前缀和后缀。
示例:
PRJ_demo_project_RESULT_NAME_BASE:=mcocomp
性能参数
下列参数与项目相关,可以根据项目的含义指定,也可以不指定。
PRJ_PROJECT_NAME_RUNTIME
启用或禁用项目运行。
null - (默认)不将SmartEDB运行库添加到项目中(适用于非SmartEDB项目)。
YES - 添加运行库到项目中。
示例:
PRJ_demo_project_RUNTIME:=YES
PRJ_PROJECT_NAME_STORAGE
定义项目的数据库存储类型。
- TRANSIENT - (默认)纯内存数据库,使用
mcovtmem
组件 - PERSISTENT - 持久/混合数据库,使用
mcovtdsk
组件
示例:
PRJ_demo_project_STORAGE:=TRANSIENT
PRJ_PROJECT_NAME_MEMDEV
定义项目使用的内存设备。
- null - (默认)链接线路上没有内存驱动程序
- PRIVATE - 使用当前平台的默认私有内存驱动程序(在
include/settings.makefile
中定义) - SHARED - 使用当前平台的默认共享内存驱动程序(在
include/settings.makefile
中定义) - <other> - 使用专用的内存驱动器,将值放到链接器行中作为内存驱动程序
示例:
PRJ_demo_project_MEMDEV:=PRIVATE
PRJ_PROJECT_NAME_STORAGEDEV
定义项目的持久存储驱动程序。这适用于基于持久和混合数据库的项目。
- null - (默认)没有存储驱动程序
- AUTO - 使用当前平台的默认持久存储驱动程序(在include/settings.makefile中定义)
- <other> - 将指定的值作为存储驱动程序放到链接器行
示例:
PRJ_demo_project_STORAGEDEV:=AUTO
PRJ_PROJECT_NAME_SYNC
定义项目的同步实现。
- null -(默认)不使用同步。
- AUTO - 根据
PRJ_PROJECT_NAME_MEMDEV
设置,使用当前平台的默认同步实现。 - <other> - 将指定的值放在链接器行中作为同步实现库。
示例:
PRJ_demo_project_SYNC:=AUTO
PRJ_PROJECT_NAME_TRANSMGR
定义项目的事务管理器。
- null -(默认)不使用事务管理器。
- MURSIW - 使用MURSIW 事务管理库。
- MURSIW_READ - 使用读优化MURSIW 事务管理库。
- MVCC - 使用MVCC 事务管理库。
- EXCLUSIVE - 使用EXCLUSIVE事务管理库。
示例:
PRJ_demo_project_TRANSMGR:=MURSIW
PRJ_PROJECT_NAME_DATABASES
PRJ_PROJECT_NAME_SCHEMAS
这两个定义了项目数据库(名称)和模式文件。列表中可以有多个数据库名称/模式,它们之间用空格分隔。列表中的项目数量必须匹配。模式文件必须由具有绝对路径的文件名表示$(call mco_project_file,<schema.mco>)
。
PRJ_PROJECT_NAME_SCHEMAS:=$(call mco_project_file,<schema1.mco> ... <schemaN.mco>)
PRJ_demo_project_DATABASES:=<database1-name> ... <databaseN-name>
示例:
PRJ_16-uda-udameta_SCHEMAS:=$(call mco_project_file,
uda1.mco uda2.mco uda3.mco uda4.mco uda5.mco)
PRJ_16-uda-udameta_DATABASES:=uda1 uda2 uda3 uda4 uda5
PRJ_PROJECT_NAME_F_BACKUP
启动内联备份功能。
- null - (默认)项目中不支持增量备份。
- YES - 为项目启用增量备份功能(和库)。
示例:
PRJ_demo_project_F_BACKUP:=YES
PRJ_PROJECT_NAME_F_CLUSTER
启用群集功能。
- null - (默认)不启用群集功能。
- TCP - 启用TCP传输的群集支持。
- MPI - 启用MPI传输的群集支持。
示例:
PRJ_demo_project_F_CLUSTER:=TCP
注
对于启用集群的项目,必须设置PRJ_PROJECT_NAME_TRANSMGR:=MVCC
。
PRJ_PROJECT_NAME_F_CPP
指示构建系统为项目数据库生成C++接口(相当于为mcocomp
设置-hpp
标志)。
- null - (默认)不启用C++接口。
- YES - 启用C++接口。
示例:
PRJ_demo_project_F_CPP:=YES
PRJ_PROJECT_NAME_F_CRT
定义是否为项目使用C运行时库CRT包装器。
- null - (默认)自动使用
mcouwrt
。 - WRT - 无条件使用
mcouwrt
(实用程序例程的CRT实现)。 - NRT - 无条件使用
mcounrt
(独立于CRT的实用程序实现)。
示例:
PRJ_demo_project_F_CRT:=YES
PRJ_PROJECT_NAME_F_CRYPT
启用加密支持。
- null - (默认)自动将
mccryptstub
添加至启用FeedHandler或SmartEDB的项目。 - YES - 将
mccryptaes
库添加到链接中。
示例:
PRJ_demo_project_F_CRYPT:=YES
PRJ_PROJECT_NAME_F_DBCALC
启用DBCALC支持。
- null - (默认)无。
- YES - 添加DBCALC库。
示例:
PRJ_demo_project_F_DBCALC:=YES
PRJ_PROJECT_NAME_F_FHLIB
启用FeedHandler支持。
- null - (默认)不启动。
- YES - 启用FeedHandler支持
示例:
PRJ_demo_project_F_FHLIB:=YES
PRJ_PROJECT_NAME_F_HA
启用高可用性(HA,High Availability)特性支持。
- null -(默认) 不启动HA支持。
- TCP - 启用TCP传输通道的HA支持。将添加默认网络编程接口。
- UDP - 启用UDP 传输通道的HA支持。将添加默认网络编程接口。
- PIPES - 启用PIPES 传输通道的HA支持。将添加默认网络编程接口。
提示
可设置多个空格分隔值。
示例:
PRJ_demo_project_F_HA:=TCP
PRJ_demo_project_F_HA:=TCP UDP
PRJ_PROJECT_NAME_F_HV
启用HttpView支持。
- null - (默认)不支持HttpView。
- YES - 启用HttpView支持。如果启用了SQL特性,则自动添加SQL支持。
示例:
PRJ_22-httpview-sql_F_HV:=YES
PRJ_PROJECT_NAME_F_IOT
启用IoT支持。
- null - 不支持IoT。
- YES - 启用IoT支持。
示例:
PRJ_demo_project_F_IOT:=YES
PRJ_PROJECT_NAME_F_LOG
启用事务日志Transaction Logging支持。
- null - (默认)不支持事务日志。
- YES - 启用事务日志支持。
示例:
PRJ_demo_project_F_LOG:=YES
PRJ_PROJECT_NAME_F_NATIVE
为mcocomp
程序强制本地字段排序(相当于设置-nosort
选项)。
- null - (默认)不重新排序。
- YES - 不重新排序数据库架构中字段。
示例:
PRJ_demo_project_F_NATIVE:=YES
PRJ_PROJECT_NAME_F_ODBC
启用ODBC支持。
null - (默认)不启动。
YES - 启动。
示例:
PRJ_demo_project_F_ODBC:=YES
PRJ_PROJECT_NAME_F_PERFMON
启用性能监视器(Performance Monitor)。
- null - (默认)不启动。
- YES - 启动性能监视器。
示例:
PRJ_demo_project_F_PERFMON:=YES
PRJ_PROJECT_NAME_F_REST
启动Web服务的REST接口特性支持。
- null - (默认)不启动。
- YES - 启用REST特性。
示例:
PRJ_demo_project_F_REST:=YES
PRJ_PROJECT_NAME_F_SEQUENCES
启动序列计算支持。
- null - (默认)不支持。
- YES - 启用序列计算Sequence支持。
- RLE - 启用RLE压缩版本的序列计算Sequence支持。
示例:
PRJ_demo_project_F_SEQUENCES:=RLE
PRJ_PROJECT_NAME_F_SERI
启动序列化支持。
- null - (默认)不支持。
- YES - 支持。
示例:
PRJ_demo_project_F_SERI:=YES
PRJ_PROJECT_NAME_F_SMARTPTR
启用为C++接口的 SmartPtr支持(相当于为mcocomp
设置-smartptr
选项)。
- null - (默认)不支持。
- YES - 支持。
示例:
PRJ_demo_project_F_SMARTPTR:=YES
PRJ_PROJECT_NAME_F_SQL
启用SQL特性支持。
- null - (默认)不支持SQL。
- LOCAL - 支持本地SQL引擎。
- REMOTE - 支持RSQL引擎与平台默认通讯接口。
- REMOTE_STANDALONE - 仅支持RSQL客户端引擎与平台默认通讯接口。
示例:
PRJ_demo_project_F_SQL:=LOCAL
PRJ_demo_project_F_SQL:=REMOTE
PRJ_demo_project_F_SQL:=REMOTE_STANDALONE
PRJ_PROJECT_NAME_F_UDA
启用UDA数据库接口特性。
- null - (默认)不支持。
- YES - 启动UDA支持。
示例:
PRJ_demo_project_F_UDA:=YES
PRJ_PROJECT_NAME_F_XML
启用XML数据库序列化特性(相当于为mcocomp
设置-x选项)。
null - (默认)不支持。
YES - 启动XML特性支持。
示例:
PRJ_demo_project_F_XML:=YES
自定义参数
以下参数仅适用于自定义构建项目。
PRJ_PROJECT_NAME_PRODUCTS
项目产品列表。
PRJ_PROJECT_NAME_PRODUCT_DIRS
将在其中创建项目产品的目录列表(如果位置不是默认的bin目录)。
PRJ_PROJECT_NAME_BUILD_LOGS
项目的生成日志列表。
PRJ_PROJECT_NAME_INTERMEDIATE_DIRS
在构建过程中,将在其中创建项目的中间文件的目录列表。
PRJ_PROJECT_NAME_MAKEFUNC
定义为项目生成生成目标的自定义生成过程的名称。