2009-09-01 149 views
22

在遇到与C#,ASP.NET,MS Access,Linux和Mono的主要兼容性问题后,我决定使用跨平台的语言,开放源代码,并且兼容与许多平台兼容的嵌入式数据库。我把我的选择缩小到了TCL。将TCL TK转换为独立应用程序的最简单步骤

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

任何人都可以提供简单的步骤,将TCL TK脚本(如带有文本的标签)转换为应用程序或具有相当直接解释的Web资源?

回答

24

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

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

您现在有一个可执行文件'myapp',它是打包的应用程序。

如果您有针对不同体系结构的tclkits,您可以使用它们(用命令行上的'basekit'替换目标体系结构的套件)以交叉编译其他平台。

欲了解更多信息,请参阅该Tcl'ers Wiki

+0

谢谢布莱恩 - 你的回答看起来不错。我现在应该可以开始了。 DFM – DFM 2009-09-01 15:24:22

+0

关于sdx.kit和tclkit的问题 - 我似乎无法获得sdx和tclkit qwrap。花了几个小时试图让sdx和tcl进入qwrap后,我不断收到错误无效的命令名。我甚至按照网络指示,并将tclkit.exe更改为tclkitsh.exe。我认为我遇到了sdx文件的问题。你如何下载sdx文件?我所能做的就是将文本复制到记事本并将扩展名更改为.kit。 sdx文件不像普通文件那样下载,而且我尝试了多个版本(?) 谢谢 DFM – DFM 2009-09-01 21:37:10

+0

以某种方式复制sdx.kit的文本将无法正常工作 - 这是一个二进制文件。也许你正在获得源代码?从此链接下载:http://www.equi4.com/pub/sk/sdx.kit。 – 2009-09-01 23:45:29

相关问题