If you want very small and fast build tools (and not Make:) you can see next: Ninja and Tcl-based Svmk. Another Tcl-based make tools are here.
Ninja
Ninja is very simple and fast. It have not functions, if-else-for-while operators, nothing, only variables, rules... But it can be used to process automatically generated "Makefile". Example:DMD = c:/dmd2/windows/bin/dmd.exe LINK = c:/dmd2/windows/bin/link.exe INC = -Ic:/dmd2/src/phobos -Ic:/dmd2/src/druntime/import rule mkprj command = $DMD -I$PKGDIR $INC -of$out $in description = Compile D program $out PKGDIR = misc/scripts build $PKGDIR/email.exe: mkprj $PKGDIR/characterencodings.d $PKGDIR/email.dSave it in build.ninja, call ninja misc/scripts/email.exe and you will get result: email.exe in misc/scripts directory. rule creates rule which has attribute command to call when it's applied. build set dependency: email.exe will be built from 2 .d files with mkprj rule by calling it command. Nothing else. Simple, fast. ninja is only ONE FILE: ninja.exe and is about 800Kb! If no target (misc/scripts/email.exe), then ninja will build it.
Svmk
It's Tcl-based make alternatives. So you have all power of Tcl (use Tclkit Shell!) in one little Tcl-script: svmk.tcl. Example of the same:# vi:set ft=tcl: set DHOME c:/dmd2/windows/bin set DMD $DHOME/dmd.exe proc dcomp {out in {dflags ""}} { global DMD if [llength $dflags] { system $DMD $dflags -of$out {*}$in } else { system $DMD -of$out {*}$in } } target email.exe { cd misc/scripts set SRC "characterencodings.d email.d" depend $SRC { dcomp email.exe $SRC } }We create dcomp procedure for compiling of D applications. Then create rule "email.exe" which is PHONY :) Common usage is target TARGET { depend DEPENDENCIES { commands... } }. You can see: we can use any Tcl commands, even download something via Net :) All what you need is: tclkitsh.exe: 740Kb, svmk.tcl: 10Kb!
To run:
tclkitsh.exe svmk.tcl email.exeAnd sure you can (and have) to use original D build tool (if we are talking about D;) - dub.
Комментариев нет:
Отправить комментарий
Thanks for your posting!