本页面将展示TclKit, StarKit, StarPack使用和构建的实际例子。
TclKit本身可以认为就是一个Tcl Shell,所以使用起来和"tclsh"也没什么区别,直接调用就是了。
% tclkit8.6 vtal.vfs/main.tcl
TclKit的存在使得下载和安装Tcl环境变得非常容易,也使得我们可以方便的使用不同版本的Tcl。
% ls -l vtal.vfs/ # 需要以 ".vfs" 结尾 total 24 lrwxrwxrwx. main.tcl -> vtal.tcl # 启动文件 -rw-r--r--. stop.gif -rw-r--r--. tal.tcl -rw-r--r--. vtal.tcl % sdx wrap vtal.kit # 生成 StarKit 文件 "vtal.kit" % sdx wrap vtal -runtime tclkit8.6 # 生成 StarPack 文件 "vtal" % ls -l -rwxr-xr-x. 4314501 vtal # 包含了Tcl运行环境 -rwxr-xr-x. 9140 vtal.kit # 没有包含Tcl运行环境 drwxr-xr-x. 4096 vtal.vfs # 原始目录依然存在 % sdx version vtal.kit 2014/11/06 05:09:49 71803-73007 vtal.kit
生成的StarKit文件"vtal.kit"也可以直接执行,看一下其内容就知道原因了。
#!/bin/sh # \ exec tclkit "$0" ${1+"$@"} package require starkit starkit::header mk4 -readonly ^Z... ... ...
StarKit本身是一个VFS,需要加载其中的文件时,需要一些“特殊”处理。
starkit::startup source [file join $starkit::topdir lib myfile.tcl] starkit::autoextend [file join $starkit::topdir lib tcllib]
上面代码的关键是变量$starkit::topdir
。
参见 A Simple Multi-File Starkit Example
还有一个技巧是利用info script
命令,这个命令返回当前执行脚本的路径,进而可以根据其他文件的相对路径计算出全路径。
source [file join [file dirname [info script]] myfile.tcl]
生成的StarPack文件"vtal"是一个二进制程序,包含了Tcl运行时环境,用户不需要安装Tcl环境也可以执行。