【问题标题】:The Simplest Steps to Converting TCL TK to a Stand Alone Application将 TCL TK 转换为独立应用程序的最简单步骤
【发布时间】:2009-09-01 14:26:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: tcl tk


    【解决方案1】:

    要构建一个 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
    

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

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

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

    有关更多信息,请参阅How to create my first StarpackTcl'ers Wiki

    【讨论】:

    • 谢谢 Bryan - 您的回答看起来很棒。我现在应该可以开始了。 DFM
    • 关于 sdx.kit 和 tclkit 的问题 - 我似乎无法让 sdx 和 tclkit 进入 qwrap。在花了几个小时试图让 sdx 和 tcl 到 qwrap 之后,我一直收到错误无效的命令名称。我什至按照网络说明将 tclkit.exe 更改为 tclkitsh.exe。我想我的 sdx 文件有问题。你如何下载sdx文件?我所能做的就是将文本复制到记事本并将扩展名更改为.kit。 sdx 文件不像普通文件那样下载,我尝试了多个版本(?)谢谢 DFM
    • 不知何故复制 sdx.kit 的文本是行不通的——它是一个二进制文件。也许您正在获取源代码?从此链接下载:equi4.com/pub/sk/sdx.kit.
    【解决方案2】:

    kitgen build system 也可以在一开始就帮到你。

    【讨论】:

      猜你喜欢
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2016-01-04
      • 2017-05-17
      • 1970-01-01
      相关资源
      最近更新 更多