Co-developing application and library
Neia Neutuladh
neia at ikeran.org
Sat Jan 5 17:44:27 UTC 2019
On Sat, 05 Jan 2019 13:01:24 +0000, Russel Winder wrote:
> Dub seems to have the inbuilt assumption that libraries are dependencies
> that do not change except via a formal release when you developing an
> application.
> Clearly there is the workflow where you want to amend the library but
> not release as a part of developing an application. Does Dub have a way
> of doing this, I haven't been able to infer one to date. But I am a
> beginner at Dub.
There are a few ways to do this:
1. Path dependency, as Alex mentioned.
2. Different build configurations. The same source code has two different
build targets; the executable doesn't depend on the library. Or, with
enough bludgeoning, you can make the executable depend on the library.
3. Subprojects.
4. dub add-local on the library, as Mike Parker mentioned.
I wouldn't depend on ~master because (a) that won't change until you
commit stuff and (b) it might require also running dub upgrade to get the
new source code.
The subproject way of doing things:
---
# dub.sdl
name "myproject"
targetType "none"
# So we build the child projects
dependency "myproject:lib" version="*"
dependency "myproject:exe" version="*"
# To define the child projects
subPackage "./lib"
subPackage "./exe"
---
---
# exe/dub.sdl
name "exe"
dependency "myproject:lib" version="*"
targetType "executable"
---
This will intuit a project structure like:
dub.sdl
exe/
dub.sdl
src/
lib/
dub.sdl
src/
But if you prefer, you can modify that with "sourcePaths" in the
subpackage dub.sdls.
More information about the Digitalmars-d-learn
mailing list