Help us understand the problem. What is going on with this article?

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away