KOTET'S PERSONAL BLOG

#dlang ローカルのdubプロジェクトに依存するdubプロジェクト

Created: , Last modified:
#dlang #qiita #tech

これは1年以上前の記事です

ここに書かれている情報、見解は現在のものとは異なっている場合があります。

この記事はQiitaに投稿されたものの転載です。


自作のライブラリを別のdubプロジェクトにしたかったので調べたけどすぐには見つからなかったので書く。わかれば簡単なことだった。タイトルはこれで適切なんだろうか?

$ tree
.
├── app
│   ├── dub.json
│   └── source
│       └── app.d
└── lib
    ├── dub.json
    └── source
        └── lib.d

lib/source/lib.d:

module lib;

import std.stdio;

void func()
{
    writeln("hello!");
}

app/source/app.d:

import lib;

void main()
{
    func();//モジュールlibの関数
}

lib/dub.json:

{
    "name": "lib",
    "targetType":"library"
}

app/dub.json:

{
    "name": "app",
    "dependencies":{
        "lib": "*"
    }
}

このままではlibが見つからないので実行できない。

$ dub run
Selected package lib ~master doesn't exist. Using latest matching version instead.
Root package app references unknown package lib

dub add-local <プロジェクトのディレクトリのパス> してやるとパッケージのリストに追加される。このプロジェクトにだけ……みたいなことは~~できないのかな?~~できる。下に追記

$ dub add-local lib
Registered package: lib (version: ~master)
$ cd app && dub run
Performing "debug" build using dmd for x86_64.
lib ~master: building configuration "library"...
app ~master: building configuration "application"...
Linking...
Running ./app 
hello!

コメントをもらったので追記。dependenciesで指定してやる方法もある。

app/dub.json:

{
    "name": "app",
    "dependencies": {
        "lib": {
            "path": "../lib/"
        }
    }
}