




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集成与构建指南集成与构建指南 XXX 项目项目 第 2 页 共 28 页 修订历史修订历史 日日 期期版本版本作者作者审核审核说说 明明 2004 2 6V1 0 胡协刚初稿 2004 2 14V1 1 胡协刚根据潘学会的反馈进行修订 2004 2 16V1 2 胡协刚增加持续集成的内容 第 3 页 共 28 页 目 录 1概述概述 5 2术语说明术语说明 5 3角色与职责角色与职责 6 4集成环境集成环境 6 4 1集成网络部署 7 4 2编译环境 7 4 2 1msvc6 7 4 2 2bcc55 8 4 3构建工具 8 4 4持续集成工具 9 4 5软件配置管理客户端 9 4 6用户私有构建场所 9 4 7主机克隆 10 5构建基础知识构建基础知识 10 5 1ANT构建脚本 10 5 1 1Ant 项目配置文件 10 5 1 2Ant 配置文件示例 10 5 1 3Ant 执行示例 12 5 2CRUISECONTROL执行脚本 13 5 2 1CruiseControl 项目配置文件 13 5 2 2CruiseControl 配置文件示例 14 5 2 3Ant 封装 wrapper 配置文件示例 15 5 2 4cruisecontrol 执行示例 15 6集成构建基本流程集成构建基本流程 16 6 1概述 16 6 2集成过程说明 16 6 3持续集成过程说明 17 7构件的集成原则构件的集成原则 18 7 1生产者与消费者 18 7 2源码目录组织原则 19 8各类构件集成的实施方案各类构件集成的实施方案 20 8 1第三方开发包的实施方案 20 第 4 页 共 28 页 8 2项目构件的实施方案 23 8 3项目系统集成发布的实施方案 25 8 4批量构建步骤 26 第 5 页 共 28 页 集成与构建指南集成与构建指南 1概述概述 软件开发的目标是得到满足需求的可运行的交付工件 即通常是得到由源码等中间工 件编译 链接并集成而生成的一个建造 build 然而构建集成却是一项看似简单实际上充 满了陷阱的工作 特别是在团队开发的场景下 将牵涉到将不同成员开发的源码等集成一 体 解决各类冲突与依赖等复杂情况 这个过程还直接依赖于软件配置管理流程的支持 一个合格的集成员需要掌握多项知识和技能 本文档将帮助集成员等相关角色理解一个完 整的构建集成过程 引导他们迅速地掌握本项目的构建工作 本文档主要内容包括 描述如何创建满足项目集成与构建活动的工作环境 简要介绍构建工具的相关知识 描述实施 单元测试 提交 集成 冒烟测试的基本流程 深入说明自动化持续集成的流程 提供对第三方开发包 项目构件等的源码结构组织和集成的指南 2术语说明术语说明 冒烟测试 用于快速验证一个系统集成的工作版本被成功地构建的一组测试 它们必须是低 成本的测试 比如自动化的测试 目标是保证一个相对稳定的 值得展开后续重量级 测试的工作版本被发布给测试员使用 持续集成 是对日构建的进一步扩展 在专门工具的支持下 通过实施自动化的构建 测试 使得项目的源码可以在专用构建机上持续地进行集成构建与测试 即在既定周期 可 以短到 30 秒 中 新提交的源码将被自动地集成 相关人员随即获得编译和测试结果 第 6 页 共 28 页 3角色与职责角色与职责 参与构建集成过程的角色如下 角色角色相关职责描述相关职责描述备注备注 集成员 制定集成与构建计划 编制集成的自动化构建脚本 指导或帮助实施员编制私有构件的自动化构建脚 本 执行集成 解决编译与链接冲突 调试构建脚本 等 建立工作基线 实施员 编制私有构件面向集成的自动化构建脚本 提交构件源码等中间工件 delivery 重设开发基线 rebase 配置管理员 配置集成用工作视图 view 分配存取权限 环境工程师 制定项目组的开发环境配置方案 建立项目的开发 集成与测试软件环境 解决软件开发环境和工具使用中出现的问题 4集成环境集成环境 为了将源码等中间工件编译 链接生成的一个建造 build 必须使用相应的编译工具 而实现构建的自动化 则需要类似 make 等构建工具的支持 实施持续集成还依赖 CruiseControl 这类专门工具 另外由于集成通常在团队协同的环境下开展 软件配置管理 工具将在此间充当重要角色 推荐的安装顺序是 克隆主机 安装配置管理工具客户端 建立用户视图 准 备用户私有构建场所 配置编译环境 配置构建环境 执行初次构建 第 7 页 共 28 页 4 1集成网络部署集成网络部署 Developing Workstation ClearCase Client MSVC6 JDK Ant Cpptask 软件配置管理库 ClearCase 2003 Server Building Serv er ClearCase Client MSVC6 JDK Ant Cpptask CruiseControl Tomcat SCM DB ClearCase Server LAN LAN Testing Workstation ClearCase Client MSVC6 JDK Ant Cpptask LAN Developing Workstation ClearCase Client MSVC6 JDK Ant Cpptask LAN 集成服务器 ClearCase 2003 Client MSVC6 0 JDK1 4 X Ant1 6 0 Cpptask Contrib CruiseControl2 0 Tomcat5 0 ClearCase View to Integration Stream to Developing Stream 开发工作站 ClearCase 2003 Client MSVC6 0 JDK1 4 X Ant1 6 0 Cpptask Contrib ClearCase View to Integration Stream to Developing Stream 测试工作站 ClearCase 2003 Client MSVC6 0 JDK1 4 X Ant1 6 0 Cpptask Contrib ClearCase View to Testing Stream 4 2编译环境编译环境 4 2 1msvc6 本项目的首要 IDE 用的是 MS Visual Studio 98 编译器相应的用 msvc6 项目中使用了 msvc6 的基础库和 mfc 库的全集 包括 unicode 部件 在安装时注意要 使用定制方式来选择 为了正常使用 msvc6 注意正确设置相应的 Path 等环境变量 虽然安装程序能自动设 置它们 但通过克隆的机器可能丢失 环境变量示例 Path C WINNT system32 C WINNT C Development Tools Building Utils apache ant 1 6 0 bin C Development Tools Microsoft Visual Studio Common Tools WinNT C Development Tools Microsoft Visual 第 8 页 共 28 页 Studio Common MSDev98 Bin C Development Tools Microsoft Visual Studio Common Tools C Development Tools Microsoft Visual Studio VC98 bin C Development Tools Microsoft Visual Studio Common MSDev98 bin 另外可以直接运行下列批命令来自动设置 仅对克隆的机器有效 D Development Home Tools Configs path bat 4 2 2bcc55 为了支持第三方使用 Borland IDE 需要配置 Bcc55 编译器 4 3构建工具构建工具 常见的构建工具 C C 有 Make Bjam cpptasks for Ant Java 有 Ant C 有 NAnt 考虑到 Ant 具备使用方便 功能全面 XML 格式可读性强 容易掌握等优点 本项目选用 Ant 作为首要的构建工具 典型构建工具环境的配置为 jsdk1 4 x Java 运行环境 apache ant 1 6 0 Ant 工具 安装路径示例 C Development Tools Building Utils apache ant 1 6 0 cpptasks1 0beta 支持 Ant 进行 C C 构建的扩展 安装路径示例 C Development Tools Building Utils apache ant 1 6 0 lib cpptasks jar ant contrib 0 6 支持 Ant 使用控制逻辑的扩展 安装路径示例 C Development Tools Building Utils apache ant 1 6 0 lib ant contrib 0 6 jar envset 项目组自行开发的一个 WinNT 环境变量设置小程序 安装路径示例 C Development Tools Building Utils apache ant 1 6 0 bin envset exe 注意 第 9 页 共 28 页 为了支持 cpptasks ant contrib 的使用 必须在 Ant 构建脚本中加入以下声明 4 4持续集成工具持续集成工具 主流的持续集成工具有 CruiseControl 提供了 Java 与 两个版本 我们通过对 Java 版本进行相应配置 实现了 C C 项目的持续集成 在集成服务器上的安装路径示例 C Development Tools Building Utils cruisecontrol 2 1 5 为了支持 C C 项目 需要加入 cpptasks ant contrib 可以通过修改 CruiseControl bat 文件来实现 示例如下 set EXTLIBDIR ANT HOME lib EXTLIBDIR ant contrib 0 6 jar EXTLIBDIR cpptasks jar 4 5软件配置管理客户端软件配置管理客户端 本项目选用 ClearCase 作为软件配置管理的工具 开发工作站 测试工作站和集成服 务器都将安装 ClearCase 客户端 其安装配置参见其它 ClearCase 相关文档 视图路径示例 D Shared Views PCHL V1 Dev 4 6用户私有构建场所用户私有构建场所 各构建主机上需要创建类似 D Development Home 的目录 作为工作用户私有的开发 场所 开发人员可以将 PCHL Supports Environments Development Development Home zip 可以从 ClearCase 的 PCHL Working 流下找到 解压直接生成此目 录集 其中 D Development Home Building Workspace 子目录将用于自动构建 Development Home zip 包内还包含 CruiseControl 持续集成的相关配置文件 第 10 页 共 28 页 4 7主机克隆主机克隆 为了提高工作效率 项目组的开发工作站可以通过克隆的方式进行快速安装 环境工 程师针对项目组日常开发 管理 协同等工作需要 制作了完整的系统盘 C 主分区 映 像 包括开发工具 CASE 工具 其它常用工具等 上述构建用工具软件均包含在内 映像有 Windows2000Professional 与 Windows2000Server 两个版本 源路径示例 back1 svr ghost imgs w2ksrv x w2ksrv GHO 使用者可以用支持网络连接的引导 CD 启动系统 执行 ghost 然后进行克隆 5构建基础知识构建基础知识 5 1Ant 构建脚本构建脚本 自动化构建的核心是表达构件间依赖关系和构建步骤的脚本 Make 工具使用 makefile 而 Ant 使用了基于 XML 格式的缺省文件名为 Build Xml 的配置文件 5 1 1Ant 项目配置文件 Ant 配置文件描述了一个构建项目 project 它由一些属性定义 property 和一个目 标树 target tree 组成 目标代表了一个期望的构建结果 例如生成一个链接好的可执行 文件 并表述了其依赖的其它目标 常见的构建目标有初始化 Init 编译 Compile 单元测试 Test 安装 Install 清除 Clean 等 每个目标包含了实现它而将要执行的 任务 task Ant 支持的任务种类非常丰富 例如源码编译 文件拷贝 执行命令行操作 等 Ant 还提供一种非常重要的任务就是执行其它的项目配置文件 使得多个构建项目的 批处理成为可能 5 1 2Ant 配置文件示例 下面是一个 Ant 项目的配置文件示例 Build file for all Improve library project 第 11 页 共 28 页 第 12 页 共 28 页 在此 Ant 配置文件中定义了项目将引用的一些 property 例如环境变量 项目的根目 录路径 指定的编译器等 项目的缺省构建目标为InstallAll 它通过依赖定义 使得初始化 Init 清除 CleanAll 编译 AutoBuild 安装 Install 测试 Test 等目标依次执 行 AutoBuild目标执行的 cc 任务 将对源码进行编译 并通过includepath 设置了编译头文 件的查找路径 通过linker 段指定了需链接的库 3d party lib 本项目中各 Ant 配置文件的具体配置和使用 请参见 Ant 用户手册等参考资料 和阅 读 Ant 配置文件本身内容 5 1 3Ant 执行示例 Ant 在命令行下执行的示例 第 13 页 共 28 页 5 2CruiseControl 执行执行脚本脚本 持续集成的过程由缺省文件名为 config xml 的配置文件来定义 config xml 中确定了构 建周期间隔 以及检测配置库状态 调用 Ant 配置文件进行构建等步骤的内容 为了实现 自动化持续集成 还应编制 Ant 封装 wrapper 配置文件 它在调用原始 Ant 构建脚本 相当于将原始 Ant 脚本封装在内 的基础上 添加用于持续集成的更新源码目录等步骤 5 2 1CruiseControl 项目配置文件 CruiseControl 项目配置文件描述了一个集成项目 project 它由引导段 bootstrappers 检测修改集段 modificationset 调度段 schedule 日志记录段 log 发布段 publishers 插件定义段 plugin 组成 引导段用来设置持续集成流程开始执行 时相关的初始化任务 例如更新源码管理中的指定文件 检测修改集段则指定了需要检测 的已置于配置管理下的目标源码 以便在检测到有源码更新后启动后续的构建步骤 例如 clearcase 中的某分支下 某视图中的一个目录 调度段是持续集成流程的核心部分 在此 确定了构建周期间隔 休眠时段 并描述了构建的目标 目标通常指向一个 Ant 封装配置 第 14 页 共 28 页 文件 日志记录段指定了将向发布步骤提供数据的各项日志记录 发布段则设置了对构建 结果进行发布和通知的内容 例如指定报告的 E mail 地址等 插件定义段用来指定 CruiseControl 各项功能实现对应的插件类 5 2 2CruiseControl 配置文件示例 下面是一个 CruiseControl 项目的配置文件示例 第 15 页 共 28 页 5 2 3Ant 封装 wrapper 配置文件示例 下面是一个 Ant 封装 wrapper 配置文件示例 注意本 Ant 项目配置文件中主要添加了update 目标 用来将 proj properties 文件中定义的 proj path d Shared Views PCHL V1 Dev PCHL Components protocols api peripheral 目录下的所 有内容进行更新 5 2 4cruisecontrol执行示例 cruisecontrol在命令行下执行的示例 第 16 页 共 28 页 6集成构建基本流程集成构建基本流程 6 1概述概述 在构建开始前 构架师应当确定项目初步的基本源码包组织结构 和包之间的依赖关 系等 并定义项目统一的构建目录结构 构架师还应指导集成员制定集成构建计划 以确 定集成的内容 构建周期和日程表 在项目构建阶段初期 构架师应密切参与或直接承担 集成的工作 从而为项目源码结构确定演进的方向 其后还应给予足够的关注 并经常性 地修订和维护源码目录结构 以便在整体上把握项目源码和最终交付工件 随后的每个构建周期都包含 实施 单元测试 提交 集成 冒烟测试的基 本过程 6 2集成过程说明集成过程说明 实施员在私有的开发工作站上 按照项目统一的源码结构组织其单元开发目录 完成 源码和单元测试代码的编制 并在集成员的指导或帮助下编制私有构件的自动化构建脚本 为了编码和调试方便 实施员通常选择 GUI 集成环境进行编译 这种 IDE 内部格式的编 译项目既不标准 也不适于集成构建使用 因此维护额外的构建脚本是必要的 在构建成 第 17 页 共 28 页 功后向集成流 Stream 提交成果 delivery 在结束提交之前 实施员应尽可能在本机 尝试集成构建 以验证构建脚本 单元测试代码与源码可用 之后完成提交 集成员在集成服务器获取各实施员提交的构件源码 先根据需要调整各源码结构以解 决构件间的编译冲突 再编制或修改集成构建脚本 加入集成构造目标 target 并增添 对新增单元构建脚本的调用 以实施统一的批量编译 链接 最终生成集成构造 为了实 现并验证集成目标 可能需要修改源码 增加或修改用于集成测试的代码 和进行集成调 试等 这可由集成员或实施员来完成此项工作 集成员开始执行干净的集成构建 为了实 现持续集成 可以配置操作系统任务 定时在夜间自动执行构建任务 生成可执行交付工 件 也包括静态或动态链接库等 为了验证构建步骤成功 随后需要执行冒烟测试 其原 则是尽可能利用已有的测试代码 通过在构建脚本中调用它们 实现自动化的冒烟测试 对于 GUI 目标系统而言 实现自动化较为困难 往往依靠手工完成冒烟测试 集成员或配置管理员为构建成功的一个构造建立基线 测试员将在测试工作站上对此 基线进行集成测试 实施员则可能在各自的开发工作站上 重设开发基线于此基线上 rebase 以在新的基础上继续后续开发工作 6 3持续集成过程说明持续集成过程说明 集成员通过配置 CruiseControl 工具 可以将部分较为简单 不需要人工干预和希望经 常重复执行的集成工作交给工具来自动完成 集成员可以配置多个持续集成项目 包括若 干个多人同时在开发的子构件 最终发布的集成包等 CruiseControl 在活动时段 循环执行各构建周期 包含 引导初始化 检测源码变 化 集成构建 单元测试 发布构建和测试结果等步骤 每当实施员在私有开发工作站上 将源码检入 Checkin 加入源码控制 Add to Source Control 或者向集成流 Stream 提交成果 delivery 时 CruiseControl 在随后 的构建周期循环中 将通过检测源码变化步骤检测到这一变化 CruiseControl 此时会等待 预定的间隔 看看是否有新的源码变化出现 避免实施员批量检入或加入源码控制时遗漏 后续变更 CruiseControl 开始调用 Ant 封装 wrapper 配置文件执行构建 它首先更新目 标源码目录下的所有内容 调用 ClearCase ccupdate 指令 以同步变化的源码 再进行编译 第 18 页 共 28 页 链接 完成预定的冒烟测试 并将结果记录到相应的日志中 CruiseControl 在构建完成后 通过 e mail 将成功或失败的结果通知提交源码变更的实施员 以及指定的其他人员 并生 成构建报告网页 相关人员通过 e mail 接受通知的同时 也可以登陆 CruiseControl 的发布 网页来浏览构建报告详细信息 7构件的集成原则构件的集成原则 7 1生产者与消费者生产者与消费者 不同构件的开发者之间通常处于一种生产者与消费者的关系 即生产者交付工件提供 给消费者使用 生产者交付的工件类型有 原始 Original 工件 源码 构建脚本 配置 文件等 中间 Derived 工件 Obj 文件 lib 库等 最终产品 Product 工件 可执行 文件 Dll 库等 其它临时 Temporal 工件 编译器产生的临时文件等 消费者将使用 这些工件 C 项目中这种消费关系包含 编译引用他方的公开 public 头文件 链接他 方的静态库文件 或 Obj 文件 以及生成的最终执行文件调用他方的动态链接库等 除了原始 Original 工件 其它派生工件都可以通过构建过程来自动生成 为了简化 生产者与消费者的依赖关系 保持派生工件对原始工件版本的一致性 并减轻配置管理的 开销 生产者应尽量只向消费者提交原始工件 消费者则依靠构建脚本生成他们需要的派 生工件 出于效率考量 在构建开销较大时 消费者也可以直接使用生产者构建出的最终 产品工件 其后果是版本冲突的风险变大 配置管理的开销增加 为了满足只提交原始工件的需要 编制自动化程度很高和高质量的构建脚本变得格外 重要 如果构建过程增加了消费者的负担 或者出现了构建失败的情况 消费者将更倾向 于直接从生产者手中拿到构建后的产品工件 理想情况下 生产者可能在消费者开始使用前就交付了其依赖的工件 但通常团队会 采用并行开发模式 消费者必须在生产者完成交付前就开始工作 因此开发替代的桩 Stub 代码 甚至为了调试方便而专门开发摹仿 Mock 代码 成了家常便饭 根据实 际需要 替代代码可以由生产者自身或消费者来开发 针对这种状况 在编写构建脚本时 第 19 页 共 28 页 应提供相应的编译 链接选项 使得消费者可以自由选择将交付代码或桩 Stub 代码编 译 链接到他的构造工作版本中 同时集成员还可以利用这些选项来开展增量式的迭代集 成 7 2源码目录组织原则源码目录组织原则 开发目录组织结构从来就是关系到项目健康成长的关键因素 开发 产品 目录提供 了项目团队进行开发 管理等活动的统一共享场所 它需要满足不同涉众 角色 在不同 的阶段 对不同类型工件进行访问的多种场景需求 因为项目的编码实施 集成等活动相 互间的依赖关系远比其它文档编写类活动要复杂 协同整合更为困难 使得合理的源码组 织结构变得极为重要 构架师和配置管理员必须投入更多精力关注开发 产品 目录中的 源码组织部分 源码目录组织的首要原则是目录结构的统一 项目中应当采用统一的分类方式 同一 的风格 一致的命名格式来创建所有构件的源码目录 本项目中涉及到第三方库 项目构 件 子系统 系统四类构件 其源码目录结构采用同一的基础目录结构 并根据各自需要 做了相应的扩展 开发 产品 目录的组织应当尽量在同一级的目录中采用同一种分类标准 目录分类 标准有 按照工件类型 src bin lib doc mdl script web xdoc 按照工件功能或用途 build test interface example 按照活动组织 plan requirement design 按照归属关系 第三方库 3rd Lib 基础构件 Components 子系统 Subsystem 等等 如下图所示 本项目中 第一级目录按照归属关系来划分 源码构件的第二级目录按 照构件设计包结构来划分 源码构件的第三级目录则按照工件类型并结合工件用途来划分 第 20 页 共 28 页 开发 产品 目录应当面向团队协作 既要做到实施员在私有空间开发时相对独立 不受他人工作的影响 又能保证与他人的工作成果同步 并顺利地实现集成 这将依赖软 件配置管理工具的支持 方能较好地达成上述目标 开发 产品 目录本身可以看作是项目的一个工件 随着项目的进展也在不断地调整 和演进 代码需要经历重构 目录结构也不例外 在项目初期就完全固定目录结构是不现 实的 当前支持对目录进行版本控制 并能方便修改目录结构的配置管理工具不多 其中 以 ClearCase 为主要代表 这也是本项目选用 ClearCase 的原因之一 8各类构件集成的实施方案各类构件集成的实施方案 8 1第三方开发包的实施方案第三方开发包的实施方案 第三方开发包在使用时有如下特点 每个产品有各自不同的目录结构 组织的方式不 第 21 页 共 28 页 统一 直接使用将增加引用和依赖关系的复杂性 产品目录全部展开后有时文件数量非常 庞大 如果直接纳入配置管理的话 加入源码控制的开销很大 而当其版本升级时替换原 有文件更是非常繁琐且容易出错 但是不控制的话又会造成第三方开发包版本冲突和安装 路径不一致的问题 项目中对第三方开发包的引用 通常不直接使用其源码 而是链接其 编译好的静态库 针对上述特点 本项目对第三方开发包的源码结构组织如下图所示 目录目录说明说明备注备注 zipped 第三方产品的发布包 通常为 zip 压缩文件 纳入配置管理 build 构建脚本以及 IDE 项目文件 纳入配置管理 第 22 页 共 28 页 目录目录说明说明备注备注 test 验证第三方产品是否成功编译 安装的测试代码 如果自行编写或修改了 测试代码则纳入配置管 理 build space 用于第三方产品进行解包 编译和安装的临时场所 临时目录 不纳入配置 管理 include 第三方产品公开头文件 即 Interface 的安装目标目 录 项目其它构件通过设置环境变量来增添一条指向 它的头文件包含查找路径 通常由构建脚本在安装 步骤中自动拷贝 lib 第三方产品最终提供给项目其它构件引用的静态库和 动态库 通常由构建脚本在编译 安装步骤生成 doc 第三方产品的用户参考文档 通常由构建脚本在安装 步骤中自动拷贝 bin 可执行文件 通常由构建脚本在编译 安装步骤生成 本方案中 纳入配置管理的通常只有第三方产品的发布包 zip 压缩文件 和能够自 动将第三方产品进行构建和安装的构建脚本 项目将在各基线中保持其不同版本的发布包 版本控制变得非常简单 而构建脚本的执行能确保正确的发布版本安装到目标开发空间 供项目其它构件引用 第三方产品虽然本身展开的目录各自不同 但是其安装后的目标目 录结构却完全一样 其它构件只需要到 include 下找头文件 到 lib 下找需要链接的库文件 引用依赖关系变得简单明了 构建脚本的执行步骤 构建脚本的执行步骤 首先执行初始化 Init 准备好编译工具配置 执行清除工作 Clean 得到干净的 工作空间 完成构建准备 Prep 创建一些临时目录 build space 和目标目录 include 进行解包工作 Unpack 将第三方产品解压到 build space 进行自动编译 AutoBuild 在 build space 目录之下生成目标库和可执行文件 开启安装过程 Install 将公开头文件 即 Interface 自动拷贝到 include 下 将用户参考文档拷贝到 doc 下 将静 态库和动态库拷贝到 lib 下 将可执行文件拷贝到 bin 下 最后再设置一个环境变量指向本 第 23 页 共 28 页 开发包的当前根目录 执行测试准备 TestPrep 从第三方发布包中组织相关的测试代码 拷贝到 test 下 进行测试构建 TestBuild 生成测试执行文件 执行测试 Test 验 证第三方产品安装成功 使用它的构件可以正常编译 并且可以通过测试 引用第三方发布包的示例 引用第三方发布包的示例 执行 log4cplus 开发包的构建脚本后 保证安装过程 Install 已正确完成 将在 D Development Home Building Workspace env properties 文件中增添一条属性记录 getenv LOG4CPLUS ROOT K PCHL V1 Dev Libraries log4cplus 并添加一个环境变量 限于 Windows NT 平台 指向本开发包的当前根目录 LOG4CPLUS ROOT K PCHL V1 Dev Libraries log4cplus 引用构件如果使用 Ant 脚本 则要在脚本中引用 env properties 文件 然后于编译任务 中 使用 getenv LOG4CPLUS ROOT 属性 分别在 includepath 段添加 getenv LOG4CPLUS ROOT include 路径 和在 libset 段使用 getenv LOG4CPLUS ROOT lib 目录来指引 log4cplus lib 等静态链接库 引用构件如果使用 msvc6 IDE 则在项目文件中分别添加 LOG4CPLUS ROOT include 头文件查找路径和 LOG4CPLUS ROOT lib 库文件查找路 径 而在引用构件的源码中使用类似以下的格式来包含 log4cplus 的公开头文件 include include 8 2项目构件的实施方案项目构件的实施方案 项目本身构件与第三方开发包不同 可以直接使用统一的目录结构 源码必须纳入配 置管理 并且要进行细粒度的版本控制 针对上述特点 本项目对构件的源码结构组织如下图所示 第 24 页 共 28 页 目录目录说明说明备注备注 build 构建脚本以及 IDE 项目文件 纳入配置管理 include 构件的公开头文件 即 Interface 目录 依赖它的构 件将通过设置环境变量来增添一条指向它的头文件包 含查找路径 纳入配置管理 src 构件的源代码 包括私有的头文件 纳入配置管理 doc 用户参考文档 纳入配置管理 test 验证构件是否成功编译 安装的测试代码 纳入配置管理 lib 构件最终提供给项目其它构件引用的静态库和动态库 通常由构建脚本在编译 步骤生成 bin 可执行文件 通常由构建脚本在编译 步骤生成 第 25 页 共 28 页 构建脚本的执行步骤 构建脚本的执行步骤 首先执行初始化 Init 准备好编译工具配置 执行清除工作 Clean 得到干净的 工作空间 完成构建准备 Prep 创建一些临时目录和目标目录 lib 进行自动编译 AutoBuild 在 lib 目录下生成目标库 在 bin 目录下生成可执行文件 开启安装过程 Install 设置一个环境变量指向本开发包的当前根目录 进行测试构建 TestBuild 生成测试执行文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中国庆课件
- 高中化学电池改造课件
- 高三下期家长会课件
- 高一化学反应与电能课件
- 离婚谈判实战技巧三大策略专业调解合同
- 电动公交充电桩场地租赁及维护保养合同
- 农业粮食仓库租赁合同范本(含仓储设施维护)
- 私人商铺租赁合同范本:包含商铺租赁税费承担条款
- 广告创意版权代理合同
- 骨骼健康养生知识培训总结
- 医院感染管理制度与职责
- 《药棒穴位按摩》课件
- 全国职工数字化应用技术技能大赛理论练习试题附答案(二)
- 中建盘扣式落地卸料平台施工方案
- 手机屏幕基础知识课件
- 外研版英语九年级上册教学计划
- 核电质量保证介绍课件
- 大型精密模具异性塑件模具技术改造项目资金申请报告
- 人教版七年级英语全册导学案整理版
- 2022年中国胸痛中心质控报告-江苏-中国胸痛中心联盟
- 中兴LTE网管操作指导书(最全)
评论
0/150
提交评论