BOO入门/使用Boo编译器
BOO入门 > 使用Boo编译器 (上一章:鸭子类别型 下一章:Boo专案的架构)
Boo 编译器典型的使用方法: booc <选项> <档案>
命令列选项
编辑选项 | 说明/描述 |
---|---|
-v | 显示详细的讯息 |
-vv | 显示更详细的讯息 |
-vvv | 显示超详细的讯息 |
-r:<reference_name> | 增加组件参考 |
-t:<type_name_to_generate> | 产生的档案类型:要制作可执行档的话,请指定 exe 或 winexe﹔要制作函式库(组件)的话,请指定 library。 |
-p:<pipeline> | 在编译时增加步骤 <pipeline>。 |
-c:<culture> | 指定要使用哪一个 CultureInfo。 |
-o:<output_file> | 指定输出档案名称。 |
-srcdir:<source_files> | 告知编译器哪儿可以找到源代码档案。(指定路径) |
-debug | 增加侦错资讯,在开发时期很有用。 (预设) |
-debug- | 不要增加侦错资讯,在正式要产出、发布时使用。 |
-debug-steps | 在每个编译步骤之后,显示 AST。(译注:主要给 Boo 开发者使用,如果你有兴趣研究的话,也可以打开来看看。) |
-resource:<resource_file>,<name> | 增加资源档。<name> 可以不用指定。 |
-embedres:<resource_file>,<name> | 增加内嵌资源档。<name> 可以不用指定。 |
所以,举例来说,为了要编译你的数据库代码,所以需要函式库:System.Data.dll,那么,你需要输入:
booc -r:System.Data.dll -o:Database.dll -t:library Database.boo
这样就会产生一个名为 Database.dll 的函式库(组件)。
使用NAnt
编辑当你的专案很大,有很多档案或函式库的时候,使用 NAnt 来进行会比较容易管理。NAnt 是一个免费的 .NET build 工具。
以上节的例子,要同样产生 Database.dll 的话,你需要建立一个 build 档案,并命名为 default.build:
<?xml version="1.0" ?>
<project name="Goomba" default="build">
<target name="build" depends="database" />
<target name="database">
<mkdir dir="bin" />
<booc output="bin/Database.dll" target="library">
<references basedir="bin">
<include name="System.Data.dll" />
</references>
<sources>
<include name="Database.boo" />
</sources>
</booc>
</target>
</project>
译注:你可能还需要在 <mkdir> 之后,加上 <loadtasks assembly="Boo.NAnt.Tasks.dll" />,让 NAnt 载入 Boo.NAnt.Tasks.dll 这个 task。
执行
$ nant NAnt 0.85 (Build 0.85.1869.0; rc2; 2/12/2005) Copyright (C) 2001-2005 Gerry Shaw http://nant.sourceforge.net Buildfile: file:///path/to/default.build Target framework: Microsoft .NET Framework 1.1 Target(s) specified: build build: database: [booc] Compiling 1 file(s) to /path/to/bin/Database.dll. BUILD SUCCEEDED Total time: 0.2 seconds.
很简单的一件事情,却需要建立一个看来复杂的 build 档案,值得吗?不过在管理许多档案时,你将会发现它很容易进行扩充与管理。此外,在变更原始档案以后,你也不需要打一长串的 booc 指令来进行编译。
在 build 档案里,最重要的部分在于 <booc> 一节,NAnt 会将这里指定的选项转送给编译器。你可以指定的属性如下:
属性 | 说明/描述 |
---|---|
target | 输出型态:library、exe 或 winexe。可以不用指定,预设为 exe。 |
output | 输出组件的名称,一定要指定。 |
pipeline | 对应到上节提到的 -p 选项,指定在编译时要使用的步骤型别。可以不用指定。 |
tracelevel | 启始编译器追踪,在进行除错时很有用。可使用的选项:Off, Error, Warning, Info, Verbose。可以不用指定,预设为 Off。 |
我想你只会用到 target 与 output,在 <booc> 里面可用的节点,有三种:
可用节点 | 说明/描述 |
---|---|
<sources> | 源代码档案,必须指定。 |
<references> | 组件参考。 |
<resources> | 内嵌资源。 |
就像范例一样,在这些节点里面,你需要再放置 <include />。
这里提到的仅仅是 NAnt 的概要,要取得更多资讯的话,可以参访NAnt 官方网站。
使用msbuild
编辑这一节是补充章节。微软之后推出了自己的 build 工具,称为 msbuild(在 Mono 里,称为 xbuild)。使用此工具最大的好处在于可以直接编译以 Visual Studio.Net/SharpDevelop/MonoDevelop 开发环境建立的 solution/project 档案。
同样地,也能使用 Boo,只要在档案里面汇入 <Import Project="$(BooBinPath)\Boo.Microsoft.Build.targets" /> 即可使用。以下的 build 档案,同样也是产生 Database.dll:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{2F537A45-B60F-4E73-808E-608D38082006}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>Library</OutputType>
<RootNamespace>Database</RootNamespace>
<AssemblyName>Database</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>bin\Debug\</OutputPath>
<DebugSymbols>True</DebugSymbols>
<DebugType>Full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<OutputPath>bin\Release\</OutputPath>
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
</PropertyGroup>
<ItemGroup>
<Reference Include="System.Data" />
</ItemGroup>
<ItemGroup>
<Compile Include="Database.boo" />
</ItemGroup>
<Import Project="$(BooBinPath)\Boo.Microsoft.Build.targets" />
</Project>
建议使用 Visual Studio.Net (express)、SharpDevelop、MonoDevelop 来进行编辑,而不要使用文书编辑软件自行撰写。