Use dub to create source lib and executables
Chris Piker
chris at hoopjump.com
Sat Mar 4 18:33:00 UTC 2023
Hi D
I normally work in a *nix environment, typically on server-side
code. For many projects I have gnu makefiles that build a small
lib along with command line utilities.
Up to now I've been creating a dub.json file for just the
sourceLibrary, and then putting embedded dub comments at the top
of each of the utility programs. The utilities are built via
`dub build --single` and a thin makefile triggers all the dub
commands.
This method is inefficient, and it won't work in a typical
Windows dev environment, so today I'm trying to remove gnu make
from the picture. Going back to basics, does anyone know of a
clear example of how to convert this simplified makefile into 1-N
dub files?:
```makefile
# Build library + utility programs.
# Lib sources are in "libsrc", 1-file programs in "utils"
# Implicit rule to make a utility program
outdir/%:utils/%.d outdir/mylib.a
dmd -I libsrc -od=outdir -of=$@ $^
# Top level build rule for everything
build:outdir/mylib.a outdir/prog1 outdir/prog2 | outdir
# Explicit rule to make output directory if not present
outdir:
@if [ ! -e outdir ]; then mkdir outdir; fi
# Explicit build rule for the library
outdir/mylib.a:libsrc/mod1.d libsrc/mod2.d
dmd -lib -od=outdir -of=$@ $^
```
This is a paired down example since `make test` and `make
install` aren't present, but I hope the main ideas are apparent.
I've been at it now for about four hours, with lots of
web-searches (btw, thanks to schveiguy for getting me this far)
but I haven't figured out what hierarchy of dub constructs I need
to create to order to get the effect of the small make file above.
Thanks for considering the question,
More information about the Digitalmars-d-learn
mailing list