TCL:使用添加库文件

Posted le.li

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCL:使用添加库文件相关的知识,希望对你有一定的参考价值。

>直接引用工具自带的库文件
通过指令:
1.1查看能直接调用的库文件路径
#可以查到工具默认库文件路径,一般包括回显中的路径以及回显中路径的父路径。
info library 
#D:/Script.NET/V2/Interps/Tcl/Lib/tcl8.4
1.2、在上一步的路径下找找没有自己需要的库,通过指令:
package require xxx  引用,一般直接写tcl文件名即可,如果不对,查看pkgIndex.tcl里package ifneeded 后边的名称。


>引用别人的库文件或者添加自己的库文件

下边的工具指Script.NET

1、将别人写好的库文件拷贝到编译器所在文件路径下。
路径:D:\Script.NET\V2\interps\Tcl\lib下,脚本中添加"package require xxx"后,就可调用了。


2、创建自己的library库

注意:一般不要使用工具自带的控制台生成pkg_mkIndex,问题较多。
可以用ActiveTcl(下边的操作,尽量使用ActiveTcl安装后的tclsh.exe交互界面执行命令)
2.1、在工具安装路径(如D:\Script.NET\V2\lib),lib库路径下创建自己的lib(创建一个文件夹),如:mylib1.0
2.2、将自己需要用到的所有tcl文件都放到这个文件夹下(tcl文件中一定要包含:package provide fun 1.0),provide提供的名称和版本。
2.3、执行工具自带的控制台(工具-->控制台),执行pkg_mkIndex -direct "D:\\Script.NET\\V2\\lib\\mylib1.0" *.tcl (tclsh.exe执行时可以在脚本中添加puts xxx,当第一次调用时,会显示puts后的内容,使用工具自带的控制台会添加puts会导致生成失败,但不会提示和报错)
说明:pkg_mkIndex [-direct--使用前直接加载当前路径下的文件,不管用到与否|-lazy -verbose--动态加载,使用时才加载,否则,不加载]
2.4生成成功后,会有类似如下显示:
package ifneeded my_fun 1.0 [list source [file join $dir fun.tcl]]
package ifneeded my_namespace 1.0 [list source [file join $dir my_namespace.tcl]]
说明:动态和静态不一样,但是必有引用的文件,不可能全是注释内容
注意:文件中可以有多个方法,但是不能包含puts xxx,否则pkg_mkIndex生成的结果会有问题。
说明:目前测试,包含变量,方法,namespace的脚本都可以被package require xxx 后调用。

3、添加自己的library库路径

工具有一个公共变量,执行代码时,可以直接使用
auto_path,使用:
3.1、显示默认自动可以引用的路径
#show the library of path which can be using directly.(Eg:package require xxx)
puts $auto_path
3.1、在默认自动可以引用的路径中,添加自己的路径,注意用applend和/。
#add path to auto_path.Intro:the path must be splited by "/",otherwise,it can not work.
lappend auto_path "D:/Tcl/lib"
puts $auto_path


其他说明:
1、非TCL工具里的指令,只能在交互界面里执行(如:dir、ping等系统自带的指令),如果不希望交互里能执行非工具里的指令,可以定义变量set auto_noexec 0(可以设置成任何值),此时下发dir会报错,不识别。恢复:unset auto_noexec,之后输入dir就可以看到dir以及它对应的回显。

 

以上是关于TCL:使用添加库文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 tcl 中向 exec 添加可变数量的参数?

tcl文件无法获取通过代码设置的环境变量[关闭]

TCL 包

Java itext为pdf 文件添加水印核心功能代码片段

tcl空调怎么用手机控制?

TCL基本语法