Posted at
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 の紹介でした。