摘要

本文介绍了代码生成基础设施的基本概念,阐述了该产品的目标、整体架构及其在Visual Studio中的集成方式。


概述

为了提高开发人员的工作效率,可以将V6应用程序的某些部分的开发自动化。对于某些应用部分的表示或开发,原生C++代码并不总是最自然的方式。我们的目标是提供图形化工具或高级语言来加速创建过程并提高代码可靠性。经过这个过程后,最终的本地代码会自动生成。

代码生产的自动化代表了整个项目生命周期中的重大开发提速。在规格说明阶段,可以快速设计应用原型,然后在仿真过程中测试,以验证其是否具有预期的行为。设计验证通过后,会自动转换为本地源代码。最后,由于代码是生成的,因此具有可靠性无需维护。

V6编程基于C++编程,包含一些无法自动化的部分,如数据模型和算法。该基础设施必须同时支持图形化和本地代码编辑。此外,这两种表示形式高度关联,必须在能够正确集成此过程的工具中进行创作。因此,我们将应用程序集成到Visual Studio中,以控制我们可以自动化的部分,并让VS处理本地代码编辑。


代码生成架构

整个开发过程集成在IDE(Visual Studio)中。IDE的设计编辑器是代码生成基础设施的核心。该编辑器用于设计由代码生成基础设施处理的应用程序域。代码编辑器支持本地语言代码编写,这是补充所开发组件的图形化设计所必需的。

两种视图都是同一个模型的部分表示。该模型包含所设计应用程序的完整表示,并且编辑器始终与之同步。此模型直接保存在磁盘上,此文件代表使用基础设施开发的应用程序的唯一持久数据。

在这里插入图片描述


应用程序仿真

虽然设计编辑器使用的模型表示接近应用程序的真实外观,但与将要生成的程序可能存在一些差异。特别是,这种差异可能有助于更容易地设计应用程序。此外,设计编辑器中的视图不能总是反映所生成应用程序的动态行为。

可以对代码生成文件进行仿真,使开发人员能够快速检查应用程序的真实外观及其动态行为。这个过程避免了长时间的编译/运行序列来检查应用程序是否运行正常。


代码生成

代码生成过程不插入Visual Studio中,而是直接插入mkmk中。在编译C++代码之前,mkmk有一个语法步骤。在此步骤中,如果mkmk遇到代码生成文件(扩展名为.DSGen),它会调用我们的特定编译器来创建最终的本地代码。然后,这些文件与应用程序一起编译和链接。

创建的头部文件和实现文件生成在LocalGenerated目录中。因此,它们不打算直接使用或编辑。

代码编译和链接工作流程


集成到Visual Studio

代码生成基础设施插入到VS Package中。这种类型的VS扩展提供了与Visual Studio的最佳集成,比Add-in具有更多的功能和灵活性。该包提供专门的接口来控制Visual Studio,并控制每个代码自动化域,如对话框、对话引擎等。

下图说明了代码生成包在Visual Studio中的集成:

代码生成包

更具体地说,该包包括:

  • 代码编辑器
  • 设计编辑器
  • 标准Visual Studio工具箱,填充了与所设计应用程序相关的自定义项
  • 标准Visual Studio属性窗口,用于编辑所创建组件的属性
  • 仿真命令,自动调用可以处理设计文档的仿真应用程序
  • 集成到VS项目,具有常规的创建/加载/保存过程

Visual Studio中的总体视图

以下是在Visual Studio开发环境中包元素的全局视图:

原生应用对话框设计器全局视图


历史记录

版本 日期 说明
1 2007年7月 文档创建
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐