TCL 自动加载:pkg_mkIndex,auto_mkindex, missing close-brace错误

本文介绍了TCL自动加载的好处,包括提高效率和简化库文件管理。通过三个步骤实现自动加载:创建脚本库,使用auto_mkindex建立索引,设置auto_path变量。在执行过程中遇到的'missing close-brace'错误通常是因为字符串中含有未配对的括号。在Windows环境下,使用大写路径或避免在密码中使用括号可以解决问题。此外,文章还提到了package的使用和管理。
部署运行你感兴趣的模型镜像

自动加载提供了两个好处,首先,你可以把有用的过程建立为过程库,而你无需精确知道过程的定义到底在哪个源文件中,自动加载机制会自动替你寻找,第二个好处在于自动加载是非常有效率的,如果没有自动加载机制你将不得不在TCL应用的开头使用source命令来加载所有可能用到的库文件,而应用自动加载机制,应用启动时无需加载任何库文件,而且有些用不到的库文件永远都不会被加载,既缩短了启动时间又节省了内存。
使用自动加载只需简单的按下面三步来做:
第一,在一个目录下创建一组脚本文件作为库,一般这些文件都以".tcl"结尾。
第二步,为自动加载建立索引。启动Tcl应用比如tclsh,调用命令auto_mkindex dir  pattern , 第一个参数是目录名,第二个参数是一个模式。
第三步是在应用中设置变量auto_path,把存放了希望使用到的库所在的目录赋给它。

 

按照这些步骤使用auto_mkindex时发生了错误:missing close-brace。

 

missing close-brace错误,这个错误的意思是缺少对称的括号{。

 

关于missing close-brace,转网上的一个贴子:

------------------------------------

今天安装好了expect以后执行脚本出现了missing close-brace错误,这个错误的意思是缺少对称的括号{

后来找到一篇文章,老外的意思也基本类似,我看了我的代码,没发现缺少括号,因为括号我都有高亮显示的,但是就是显示缺少,这时候,我发现一个问题,我得密码里面有一个括号

类似这样
expect “*password:” { send “abc1234{56/r” }

我尝试的将密码改成没有括号的那种,顺利执行了,看来这个老外想表达的就是如果你输入的这个string里面也有括号的话,expect就很傻瓜的把认成代码的部分,去找另一半括号,就报错了,问题就是如此。 

-----------------------------------

 

我在windows里,用auto_mkindex,tclsh,wish都报错:

%auto_mkindex e:/tclexp *.tcl

missing clsose-brace

 

这个问题解决了,无意中发现的,改成大写的路径就好了:

%auto_mkindex E:/TCLEXP2 *.TCL

或者

%auto_mkindex E:/TCLEXP2 *.TCL

愿意不详。

 

 

 

在linux的tclsh就没有问题

%auto_mkindex /home/tcl *.tcl

%set auto_path [linsert $auto_path 0 /home/tcl]       #linsert 记得写0

 

现在就可以直接用该目录下的过程了。!如果修改了文件或者增减过程,需要重新生成索引。 

 

---------------------------------------------------------------------------------

package

首先在.tcl文件建立package

package provide testp 1.0

把路径加入到auto_path

%lappend auto_path E:/TCLEXP2

建立索引 (这个格式容易出错)

%pkg_mkIndex E:/TCLEXP2 *.tcl

使用包

%package require testp

这样包里的东西就随便使用了

%

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

在构建某些项目时,如果系统提示 `Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)` 错误,这意味着 CMake 无法找到 `pkg-config` 工具。`pkg-config` 是用于管理编译时依赖库配置信息的工具,许多 Linux 上的开发包都依赖它来获取正确的编译和链接参数。 ### 常见原因与解决方法 1. **未安装 `pkg-config` 工具** 最常见的原因是系统中没有安装 `pkg-config`。可以通过以下命令安装: ```bash sudo apt update sudo apt install pkg-config ``` 安装完成后,重新运行 CMake 配置步骤即可[^1]。 2. **环境变量未正确设置导致 CMake 找不到 `pkg-config`** 如果系统已安装 `pkg-config`,但 CMake 仍报错,可能是可执行文件路径未包含在 `PATH` 环境变量中。可以检查是否存在该程序: ```bash which pkg-config ``` 若无输出,说明 `pkg-config` 不在当前路径搜索范围内,需将其路径加入 `PATH`: ```bash export PATH=$PATH:/usr/bin/pkgconfig ``` 或者根据实际安装路径调整[^1]。 3. **手动指定 `PKG_CONFIG_EXECUTABLE` 路径** 在某些情况下,CMake 无法自动检测到 `pkg-config` 的位置。可以在调用 CMake 时手动指定其路径: ```bash cmake -DPKG_CONFIG_EXECUTABLE=/usr/bin/pkg-config .. ``` 4. **确保 `.pc` 文件路径已加入 `PKG_CONFIG_PATH`** 若项目依赖的库已安装,但 `pkg-config` 仍找不到对应的 `.pc` 文件,需要将相应的路径添加到 `PKG_CONFIG_PATH` 中,例如: ```bash export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig ``` 此方法适用于安装第三方库(如 OpenCV)后未被系统默认路径识别的情况。 5. **验证是否修复成功** 修改完环境变量后,建议运行以下命令验证是否生效: ```bash pkg-config --version ``` 然后重新运行 CMake 配置流程以确认问题是否解决。 --- ### 示例:配置 OpenCV 的 PkgConfig 路径 若用户正在使用 OpenCV 并遇到此问题,除了安装 `pkg-config` 外,还需确保 OpenCV 的 `.pc` 文件已被正确加载。通常 OpenCV 安装后的 `.pc` 文件位于 `/usr/local/lib/pkgconfig/opencv4.pc`,可按如下方式设置: ```bash export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig ``` 然后通过以下命令验证是否能正确识别 OpenCV: ```bash pkg-config --cflags --libs opencv4 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值