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以及它對應的回顯。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM