digitalmars.D.learn - Building custom library package with dub
- alex1974 (14/14) Mar 18 2017 I want to build a custom library with useful extensions to
- Basile B. (12/26) Mar 18 2017 You can put everything in a single library. The module names
- alex1974 (5/20) Mar 18 2017 Thanks for the answer.
- Mike Parker (11/14) Mar 18 2017 By "compiled every time", if you're talking about when using the
- alex1974 (6/21) Mar 18 2017 Actually the compiling is fast. But its confusing, that all
- alexander1974 (37/63) Aug 24 2017 My folder structure looks like
I want to build a custom library with useful extensions to phobos. They should be named like: extensions.regex extensions.path extensions.files ... Some libraries, like extensions.files contain several files (e.g files.d, filesexceptions.d) Analog to phobos I would like to import them like import extensions.files: temporary; What would be the best approach for the folder layout and dub? I guess subPackages, but I can't get them to compile and link properly. Thanks for the help
Mar 18 2017
On Saturday, 18 March 2017 at 11:29:43 UTC, alex1974 wrote:I want to build a custom library with useful extensions to phobos. They should be named like: extensions.regex extensions.path extensions.files ... Some libraries, like extensions.files contain several files (e.g files.d, filesexceptions.d) Analog to phobos I would like to import them like import extensions.files: temporary; What would be the best approach for the folder layout and dub? I guess subPackages, but I can't get them to compile and link properly. Thanks for the helpYou can put everything in a single library. The module names should match to the folder layout: extensions/regex.d // module extensions.regex; extensions/path.d // module extensions.path; extensions/files/package.d // module extensions.files; extensions/files/files_stuff1.d // module extensions.files.files_stuff1; extensions/files/files_stuff2.d // module extensions.files.files_stuff2; Note the particular case of package.d. To have a module with the same name as a folder you name it package.
Mar 18 2017
On Saturday, 18 March 2017 at 12:26:35 UTC, Basile B. wrote:On Saturday, 18 March 2017 at 11:29:43 UTC, alex1974 wrote:Thanks for the answer. This simple layout works, but then all parts will be compiled every time. Is there a way to just compile the "sublibraries" which have changed?[...]You can put everything in a single library. The module names should match to the folder layout: extensions/regex.d // module extensions.regex; extensions/path.d // module extensions.path; extensions/files/package.d // module extensions.files; extensions/files/files_stuff1.d // module extensions.files.files_stuff1; extensions/files/files_stuff2.d // module extensions.files.files_stuff2; Note the particular case of package.d. To have a module with the same name as a folder you name it package.
Mar 18 2017
On Saturday, 18 March 2017 at 12:49:33 UTC, alex1974 wrote:This simple layout works, but then all parts will be compiled every time. Is there a way to just compile the "sublibraries" which have changed?By "compiled every time", if you're talking about when using the library as a dependency, that's not quite true. dub will compile dependencies on the first run, then only in specific scenarios, not every time. It's really not a big deal. Take a look at dlib [1], for example. On big monolithic library and I haven't seen anyone complaining. But if you really want to, take a look at subpackages[2] in the dub docs. [1] https://github.com/gecko0307/dlib [2] https://code.dlang.org/package-format?lang=json#sub-packages
Mar 18 2017
On Saturday, 18 March 2017 at 13:41:12 UTC, Mike Parker wrote:On Saturday, 18 March 2017 at 12:49:33 UTC, alex1974 wrote:Actually the compiling is fast. But its confusing, that all unittests from all sublibraries are performed every time. I thought with subpackages I can perform just the test from the part I'm working on. But I can't get the right layout for the subpackages.This simple layout works, but then all parts will be compiled every time. Is there a way to just compile the "sublibraries" which have changed?By "compiled every time", if you're talking about when using the library as a dependency, that's not quite true. dub will compile dependencies on the first run, then only in specific scenarios, not every time. It's really not a big deal. Take a look at dlib [1], for example. On big monolithic library and I haven't seen anyone complaining. But if you really want to, take a look at subpackages[2] in the dub docs. [1] https://github.com/gecko0307/dlib [2] https://code.dlang.org/package-format?lang=json#sub-packages
Mar 18 2017
On Saturday, 18 March 2017 at 13:47:34 UTC, alex1974 wrote:On Saturday, 18 March 2017 at 13:41:12 UTC, Mike Parker wrote:My folder structure looks like extensions/ dub.sdl regex/ dub.sdl source/ regex.d files/ dub.sdl source/ package.d commons.d fileexceptions.d ... the main dub.sdl under extensions/: dependency "extensions:regex" version="*" subPackage "./regex/" dependency "extensions:path" version="*" subPackage "./path/" dependency "extensions:files" version="*" subPackage "./files/" dependency "extensions:ranges" version="*" subPackage "./ranges/" dependency "extensions:arrays" version="*" subPackage "./arrays/" dependency "extensions:types" version="*" subPackage "./types/" eg regex/dub.sdl: name "regex" targetType "library" "simple" subpackages, like extensions:regex, compile fine with dub build extensions:regex but subpackages containing several files won't, like dub build extensions:files Also reffering to them from external projects don't work. Any ideas?On Saturday, 18 March 2017 at 12:49:33 UTC, alex1974 wrote:Actually the compiling is fast. But its confusing, that all unittests from all sublibraries are performed every time. I thought with subpackages I can perform just the test from the part I'm working on. But I can't get the right layout for the subpackages.This simple layout works, but then all parts will be compiled every time. Is there a way to just compile the "sublibraries" which have changed?By "compiled every time", if you're talking about when using the library as a dependency, that's not quite true. dub will compile dependencies on the first run, then only in specific scenarios, not every time. It's really not a big deal. Take a look at dlib [1], for example. On big monolithic library and I haven't seen anyone complaining. But if you really want to, take a look at subpackages[2] in the dub docs. [1] https://github.com/gecko0307/dlib [2] https://code.dlang.org/package-format?lang=json#sub-packages
Aug 24 2017