`
吕不为
  • 浏览: 68892 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Delphi的自动编译软件Want

阅读更多

Delphi自动编译环境的搭建及使用

什么是Want

      Want是一套Windows下用于编译Delphi源代码的工具.Want的名称是Windows Ant的意思. Ant是Java下最著名的自动编译工具,因此作者起名为Want.

为什么要使用Want

      借助Want我们可以对Delphi的源代码进行自动化的编译,并且针对关键的业务代码或函数, 我们可以编写单元测试代码,借助Want,先编译单元测试代码,自动运行单元测试程序, 如果失败,则通过编译日志发送到指定的邮箱中或者Web页面上.如果编译成功,则可以编译 源程序.然后再通过打包功能,把可执行文件和运行程序必须的库文件打包到Zip和Setup安 装文件,并发布到内部的网络上,供测试人员进行代码测试.由于做到了自动编译,我们可以 每天发布一个NightlyBuild版本.在当天晚上自动运行.通过自定义脚本,自动检查代码常见 问题及风格样式,如创建了对象却没有释放的问题.并且.当第二天上班时,研发人员可以得到 一个代码隐患列表.测试人员可以得到一个日构建测试版本.并且从SVN中提取新增的功能,供 测试人员注意.

Want只是实现这些功能的第一步.下面,我们说一下如何逐步的实现这些功能.

如何配置Want环境

Want的运行只需要一个可执行文件,即Want.Exe在自动编译服务器上,不需要安装Delphi开发环境,只需要把你在别的机器上安装好的Delphi复制到编译服务器上即可,我们用不到Delhi的IDE开发 环境,只用到了他的编译器,因为虽然Delphi2007以后的IDE开发环境是基于.net的,但是编译器还是纯Win32程序,所以,只要装完操作系统即可,无须任何第三方程序或组件包,甚至我们可以在Linux,Freebsd下安装Wine模拟器,这样我们连安装Windows也省了,这也正是我在公司所采用的办法。

对于研发人员,我们可以使用Dof2Want小程序来帮我们把dof项目选择文件生成want.xml编辑配置文件.

Dof2want,由于Want是采用XML文件格式描述Delphi工程配置信息的.而Delphi本身生成 的配置选项文件是Dof文件.所以,我们需要这样一个工具把Dof文件转换成Want的XML文件.

 

生成Want.XML文件

1自动生成当前目录下所有的子目录中Delphi项目的Want.xml文件.

2手动生成每个项目的Want.xml文件. 执行WangGen.exe程序,打开源代码所在目录,然后点击菜单"生成XML文件",则可以生成Want.XML文件. 然后点击"运行Want文件",就可以查看编译是否成功,如果不成功,则需要手工修改XML文件配置.

如何自动编译所有的模块

在各个模块的父文件夹中,写一个文件,内容如下

<?xml version="1.0"?>
<project name="compileall" basedir="." default="all">
  <target name="all"   depends="Test1,Test2,Test3">
  </target>
  <target name="Test1">
    <want dir="Test1"
    description="编译Test目录下的项目" />
  </target>
  <target name="Test2">
    <want dir="Test2"
    description="编译Test2目录下的项目" />
  </target>
  <target name="Test3">
    <want dir="Test3"
    description="编译Test3目录下的项目" />
  </target>
</project>

在命令行下输入want命令,就会编译所有相关的模块了。 如果把这个Want命令放到计划任务中,则可以每天晚上自动编译程序所有的相关模块. 如果编有单元测试的代码,也可以自动编译单元测试代码,运行单元测试代码.

常见问题解答:

1 如果我装了几个不同版本的Delphi,该如何指定我要求的版本?
在环境变量中指定delphi_version的值,如果为Delphi5,则值为5,Delphi7则值为7,以此类推,

2 包的dcp和bpl的输出路径怎么设置?
在<dcc段的属性中,增加 dcpoutput="../dcp" bploutput="../bin"即可

3 如何指定查找路径,比如我的程序依赖于某个路径下面的包.
在<Dcc></Dcc>段中,增加<unitpath name="../dcp" />即可. 也可以起一个模式名

 <patternset id="sources">
    <include name="..\dcp" />
  </patternset>

然后在Dcc节中,增加 <unitpath refid="sources" /> 即可.


Q 如何在Want中用NSIS将程序打包成安装程序

A 这是一个Cnpack打包成安装程序的例子

  <!-- 制作安装程序 -->
  <target name="makeinst" description="Build CnWizards Installer." >
    <copy tofile="${install.src}/release.inc.old" unless="ismaster" >
       <include name="${install.src}/release.inc" />
    </copy>
    <echo input="${install.src}/release.template.inc" file="${install.src}/release.inc" />
    <exec basedir="${install.src}" defaultfilters="true"
          executable="${ProgramFiles}\NSIS\makensis" >
      <arg value="CnWizards_Install.nsi" />
    </exec>
    <delete dir="${install.src}" unless="ismaster" >
       <include name="${install.src}/release.inc" />
    </delete>
    <move tofile="${install.src}/release.inc" unless="ismaster" >
       <include name="${install.src}/release.inc.old" />
    </move>
  </target>

Q 如何删除一个文件?

A 用Delete指令即可,如下

<project default="aa">
    <target name="aa">
        <delete basedir="z:\">
            <include name="z:\1.doc" />
        </delete>
    </target>
</project>

要注意的是,delete的basedir属性必须要和include name属性是同一个驱动器或者路径,否则 会提示:Will not scratch z:\3.doc outside of I:即,不能删除当前路径外面的文件.


Q 在一个目录中有两个项目文件,如何在总的自动编译Want文件中指定编译哪一个?

A

  1. 在该目录下生成特殊名称的自动编译文件,如Want_1.xml,
  2. 在总的Want文件中采用指定的参数BuildFile进行指定的项目文件编译.
  <target name="jhcbhs">
    <want dir="各模块目录\成本核算\作业成本核算" 
          BuildFile="want_jh.xml"
          description="计划成本核算" />
  </target>

 

分享到:
评论

相关推荐

    delphi自动编译工具Want及dof2want.rar

    DOL是Delphi编译后生成的对象文件,通常用于链接成最终的可执行程序。然而,在大型项目中,管理大量的DOL文件可能会变得复杂。Dof2want工具则解决了这一问题,它可以将DOL文件转换为XML格式,使得项目配置更加清晰易...

    want-0.3.3.zip

    标签 "delphi delphi编译 want ant" 进一步强调了该工具与 Delphi 编译和构建过程的关联,同时也明确了 "want" 的定位,即作为 Delphi 项目的自动化构建工具。 从压缩包子文件的文件名称列表来看,我们可以推测出...

    WANT.2.0.4.bin

    综合以上信息,我们可以得出"WANT"是一个针对Delphi开发者的自动化构建工具,类似于Java的Ant,通过XML配置文件来管理构建过程。它包含多个可执行文件,分别用于不同的功能,还有详细的教程和许可协议供用户参考。...

    Want 2.0.4 src

    自动构建是软件开发中的一个关键环节,它能够自动化执行编译、测试、打包等任务,极大地提高了工作效率和软件质量。通过每日自动构建,团队可以及时发现并修复问题,保持代码的健康状态。这通常涉及到持续集成...

    Mastering Delphi 7--Code

    3. **want.xml**:这个文件可能是一个项目配置文件,用于存储书中的例子或项目的元数据,比如相关资源的链接、编译设置等。XML是一种结构化数据格式,可以方便地存储和解析大量信息,这对于管理和组织复杂的编程项目...

    FastReport 4.7源码编译包

    打开文件夹中自带的编译工具recompile.exe 进行编译控件包 1、在select the compiler中,选择你电脑已安装的delphi对应版本 2、Select the FastReport Version:选中Enterprise (企业版) 3、Select the ...

    为Delphi提供Pack功能.rar_pack

    描述中的“you want 为Delphi提供Pack功能”可能意味着你正在寻找如何在Delphi中实现应用打包的方法,或者你已经找到了某个解决方案并希望分享。 标签“pack”进一步确认了这个主题,它可能涉及如何使用特定的打包...

    dunit-9.2.1.zip_delphi dunit_dunit-9.2_guitestrunner.d_单元测试

    3. **Makefile**:这是用于自动化构建过程的文件,通过它,开发者可以方便地编译和链接项目。 4. **readme-kylix.txt**:可能针对Kylix编译器的特定说明,Kylix是Linux下的Delphi版本。 5. **www.pudn.com.txt**:...

    Fastreport VCL Enterprise 5.2.3 for XE2-XE8

    -&gt;4."What you want to do"选"Recompile all packages"(一定要选这个),那个语言选择的不管它先(默认English) -&gt;点击"Compile"(等它编译完,有个确定提示,记下上面的编译到路径,比如:D:FRLibD15) -&gt;点击...

    FastReport

    &gt;"Options"-&gt;左侧"Environment Options"-&gt;"delphi Options"-&gt;"Library"-&gt;右侧"Library path:"-&gt;右边的"..."按钮-&gt;把前面的路径(D:FRLibD15)复制到"Greyed items denote invalid path."中-&gt;点击"OK"完成编译路径的...

    Dunit9.3

    DUnit9.3 是一个专为 Delphi 开发者设计的单元测试框架,它帮助程序员编写和执行针对 Delphi 代码的自动化测试,确保软件组件的质量和稳定性。在 Delphi 开发过程中,单元测试是不可或缺的一个环节,它能提前发现...

    FastReport4安装教程.doc

    在搜索结果中,分别找到FastScript、FastQB、Source三个目录下的文件,双击打开,进入Delphi进行编译。 六、复制文件 将以下文件复制到Windows\System32目录下: * fqb70.bpl * fs7.bpl * fsDB7.bpl * fsBDE7.bpl...

    DUnit3:用于Delphi XE的DUnit-开源

    - **Makefile**:用于自动化编译和构建过程的脚本,适用于Unix/Linux系统。 - **readme-9.4.txt, readme-9.3.txt, readme-fastmm.txt, readme-kylix.txt**:针对特定版本或组件的说明文件。 - **want.xml**:可能...

    FastReport VCL Enterprise (ClientServer) 6.3.11 Full Source

    1、在select the compiler中,选择你电脑已安装的delphi对应版本 2、Select the FastReport Version:选中Enterprise (企业版) 3、Select the TeeChart Version:TeeChartStd 4、what you want to do: 先选中...

    FastReport VCL 6.8.6 D7-D10.3 Rio Full Source

    使用目录下recompile.exe 编译,第4步.What you want to do 先选择 Recompile all packages 编译全部包,然后再选择Change language to:Chinese编译中文包

    JGsoft.RegexBuddy.v3.4.2

    该软件可以编译由其它软件编写的复杂的正规表达式。使用纯英文模块代替标准的 Regex 语法。在样本行和文件上测试任何规范的表达式,防止在实际数据上发生错误。通过分步完成真实的匹配过程来进行调试而不是单凭...

    正则表达式工具:JGsoft RegexBuddy v3.4.2 零售版(无需要注册激活)

    该软件可以编译由其它软件编写的复杂的正规表达式。使用纯英文模块代替标准的 Regex 语法。在样本行和文件上测试任何规范的表达式,防止在实际数据上发生错误。通过分步完成真实的匹配过程来进行调试而不是单凭...

Global site tag (gtag.js) - Google Analytics