D言語
D言語Day 23

D言語のビルドツール DUB

More than 5 years have passed since last update.

本当はD言語で Wavelet Matrix のライブラリを作って公開しようと思ったのですが
23日に間に合わなかったのでdubの紹介をします(出来たらまた別途公開することにします)。

DUBとは

dub は D 言語のビルドツール兼パッケージマネージャです。
JSON で必要なライブラリ(とそのバージョン)を記載しておくと、dub が自動的に持ってきてくれます。 Ruby でいう Gemfile のようなものですね。
単に便利なだけでなく、D言語の標準パッケージマネージャになるとかならないとか言われているようなので、使うに越したことはありません。

インストール

DUB の公式サイト で、バイナリかソースをダウンロード&インストールすればOKです。Windows, Mac OS X, Linux 用のバイナリが容易されているので、とても簡単です。

また、DUB に対応しているパッケージの一覧も書いてあるので見てみましょう。
欲しいライブラリが記載されていないときは、Twitterでつぶやくとなぜかいつの間にか追加されています。怖い。

つかいかた

$ dub init test
Successfully created an empty project in '/Users/kazoo04/test'.

で、プロジェクト用ディレクトリ(ここでは test)が生成されます。中身は

  • /package.json
  • /source
  • /source/app.d

の3つです。
ソースコードは source ディレクトリに入っていて、このディレクトリ内のコードがビルドの対象になります。ちなみに src という名前でもOKです。
package.json の dependencies にパッケージのことを書きます。
デフォルトでは次のような感じになっています。

{
    "name": "test",
    "description": "A minimal D application.",
    "copyright": "Copyright © 2013, kazoo04",
    "authors": ["kazoo04"],
    "dependencies": {
    }
}

たとえば、 msgpack-d と vibe.d を使いたいときは

{
    "name": "test",
    "description": "A minimal D application.",
    "copyright": "Copyright © 2013, kazoo04",
    "authors": ["kazoo04"],
    "dependencies": {
        "vibe-d": ">=0.7.19-beta.2"
    }
}

のように書きます。上記のようにバージョンを指定すればそれを、master と書けばリポジトリの最新のものをインストールしてくれます。
たとえば次のような表記が使えます。

  • ==1.0.0
  • >=1.0.0
  • >=1.0.0 <=1.2.3
  • ~master

ビルドするときは、

$ dub build

です。パッケージのインストールのために時間がかかりますが気長に待ちましょう。

最後に

$ dub run

で実行できます。

その他のオプション

公式ページ に細かい package.json の設定が載っています。

たとえば、 configurations を指定することで、複数のビルド設定を切り替えることが出来たり、 DUB に登録されていないリポジトリを登録したりすることができます。

以上簡単ですが DUB の紹介でした。