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 來進行編輯,而不要使用文書編輯軟體自行撰寫。