Interdependent dub subpackages
Anonymouse
zorael at gmail.com
Fri Aug 30 12:54:04 UTC 2019
I have a project where the source is mixed library, mixed
application, and I'd like to separate the two. The code is fairly
decoupled as is, but the files are all next to each other in the
same namespace.
I moved out the library parts and made a new dub package, and it
alone compiles fine. Ideally I'd like to separate it further into
subpackages in a tree-like structure where some depend on others
(but not the other way around).
> /dub.sdl
---
name "lu"
targetType "none"
dependency "lu:base" version="*"
dependency "lu:utils" version="*"
subPackage {
name "base"
targetType "library"
sourcePaths "base"
}
subPackage {
name "utils"
targetType "library"
sourcePaths "utils"
}
---
> /base/dub.sdl
---
name "base"
targetType "library"
sourcePaths "source"
---
> /utils/dub.sdl
---
name "utils"
targetType "library"
sourcePaths "source"
dependency "lu:base" version="*"
---
$ dub build
Performing "debug" build using /usr/bin/dmd for x86_64.
lu:base ~master: building configuration "library"...
lu:utils ~master: building configuration "library"...
utils/source/config.d(35,12): Error: module `common` is in file
'lu/base/common.d' which cannot be read
import path[0] = /usr/include/dlang/dmd
/usr/bin/dmd failed with exit code 1.
The offending line is naturally `import lu.base.common;`.
Is what I'm trying to do not possible? I thought lu:utils would
just use the generated liblu_base.a. Am I not understanding it
right? I tried adding importPaths "." to the subPackages section
in /dub.sdl in hope it would see it but it did nothing.
importPaths "base" does nothing either.
Do I need to add the source paths for "upstream" subpackages
after all? Is that kind of downward dependency tree not possible?
More information about the Digitalmars-d-learn
mailing list