>直接引用工具自帶的庫文件 通過指令: 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以及它對應的回顯。