0
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

自作のライブラリを別の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/"
        }
    }
}
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
Sign upLogin
0
Help us understand the problem. What are the problem?