23

在遇到 C#、ASP.NET、MS Access、Linux 和 Mono 的主要兼容性问题后,我决定使用一种跨平台、开源且与嵌入式数据库兼容的语言进行编程,这些数据库也与许多兼容平台。我将选择范围缩小到 TCL。

在我开始使用 TCL 的示例应用程序之前,我想看看创建一个独立的应用程序是多么容易。我购买了一本名为“TCL 和 TK 中的实用编程”的书,下载了 TCLkit 和 FreeWrap,但是我在寻找将 TK(Wish)中的 TCL 转换为独立应用程序的方法时遇到了麻烦。

谁能提供简单的步骤来将 TCL TK 脚本(例如带有文本的标签)转换为应用程序或具有非常直接解释的 Web 资源?

4

2 回答 2

24

要构建一个starpack,您需要 a) tclkit运行时,b) sdx.kit。您还需要一个“basekit”,它将与您的 tcl 代码一起包装的可执行文件。对于这个例子,我假设您正在为您正在运行的同一平台创建一个应用程序。您可以通过简单地将 tclkit(或 Windows 上的 tclkit.exe)复制到另一个名称来创建 basekit,例如“basekit”

% ls
sdx.kit tclkit
% cp tclkit basekit
% ls
basekit sdx.kit tclkit

现在,创建要包装到可执行文件中的代码。惯例是使用您的应用程序名称和后缀“.vfs”(代表“虚拟文件系统”)创建一个目录,然后在该目录中创建一个名为“main.tcl”的文件:

% mkdir myapp.vfs
% cat > myapp.vfs/main.tcl
package require Tk
label .l -text "Hello, world"
pack .l
^D
% ls myapp.vfs
main.tcl

现在进行包装:为此,您需要 sdx.kit 文件。假设它和 tclkit(或 tclkit.exe)在您当前的工作目录中,您可以像这样包装您的应用程序:

% ./tclkit sdx.kit wrap myapp -runtime basekit
1 updates applied
% ls 
basekit myapp myapp.vfs sdx.kit tclkit

wrap 命令知道,当您给它参数“myapp”时,它应该包装 myapp.vfs 的内容,并且它应该在该目录中查找名为“main.tcl”的文件作为程序入口点。您可以在该目录中放置您想要的任何其他文件,它们都将被打包,包括特定于平台的二进制文件、图像文件以及您想要捆绑的任何其他文件。

您现在有一个可执行文件“myapp”,即打包的应用程序。

如果您有用于不同架构的 tclkit,您可以使用它们(将命令行上的“basekit”替换为目标架构的工具包)为其他平台进行交叉编译。

有关更多信息,请参阅Tcl'ers Wiki上的如何创建我的第一个 Starpack

于 2009-09-01T14:53:32.443 回答
2

kitgen 构建系统也可以在开始时帮助您。

于 2009-09-01T15:40:07.647 回答