移动时,Wrapped Tcl脚本停止工作

时间:2013-01-29 10:49:29

标签: tcl

我是Tcl的新手,我有一个使用freewrapTCLSH.exe包装的脚本

首先,当程序启动时,程序抱怨没有找到包

我编辑了似乎要“包含”它的行

lappend auto_path ../../lib/crc

这很好用.exe开始没有问题。但后来我将exe移动到另一个文件夹,它又开始抱怨了。我认为一旦exe被创建,一切都会完成。但它似乎并没有很好地处理这个问题。 起初,lib的整个路径被硬编码到脚本中,然后一切正常。但是,由于我们不能依赖于始终在同一文件夹中构建的exe,因此必须进行更改。

关于如何解决这个恼人的问题的任何想法?

2 个答案:

答案 0 :(得分:2)

每次搜索包时,都使用当前工作目录解释

../../lib/crc。有了这个东西,你的::auto_path几乎总是不是你想要的。

我使用[file dirname [info script]]获取当前来源的Tcl文件的目录,添加lib/crc file join的某个file normalize的相对路径,确保获得file normalize的完整路径名。 ::auto_path的结果是我添加到lappend ::auto_path [file normalize [file join [file dirname [info script]] ../mylib]] 的内容(或者记住将来以其他方式使用):

info script

这可能是显而易见的,但仍然是:{{1}}返回当前为源文件的路径,而不是以包含对其的调用的文件来源记住的路径。如果您想获取当前脚本位置,请确保它在正确的时间发生(例如,在顶层执行)。

答案 1 :(得分:1)

您应该将所需的包(以及该包的依赖项)提供给您的exe。 通常这只涉及将所需包的目录复制到vfs中的lib文件夹。