Edited at

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

More than 1 year has passed since last update.

自作のライブラリを別の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/"
}
}
}