在TCL中启动带有多个参数的程序(vcom)时遇到问题

时间:2010-12-21 09:05:43

标签: arguments tcl

我正在尝试使用额外选项从TCL脚本启动程序(vcom):

set compilationArgs "-quiet -93"
vcom $compilationArgs -work work polar2rect/sc_corproc.vhd

但是当我运行它时,我收到以下错误消息:

# Model Technology ModelSim ALTERA vcom 6.5e Compiler 2010.02 Feb 27 2010
# ** Error: (vcom-1902) Option "-quiet -93" is either unknown, requires an argument, or was given with a bad argument.
# Use the -help option for complete vcom usage.
# /opt/altera/10.0/modelsim_ase/linuxaloem/vcom failed.

TCL似乎将两个额外选项(-quiet)和(-93)作为vcom的一个选项。如果我只使用这两个选项中的一个,它就可以工作。如果我运行(vcom -93 -quiet -work work polar2rect / sc_corproc.vhd)它也可以运行。

我该如何解决这个问题?

谢谢, 亨德里克。

1 个答案:

答案 0 :(得分:5)

“问题”是Tcl在管理空间时要小心。如果您有空格参数(例如Windows机器上的许多完整文件名),这非常有用,但如果您希望自动分解列表,有时会令人沮丧。修复是向Tcl表明这个你要分成多个单词的东西。

最佳答案至少需要Tcl 8.5(找出您使用info tclversioninfo patchlevelpackage require Tcl获得的版本。

vcom {*}$compilationArgs -work work polar2rect/sc_corproc.vhd

如果你是针对旧版本的Tcl构建的,那么你需要这样做:

eval vcom $compilationArgs -work work polar2rect/sc_corproc.vhd

(或者,这是正确的,但很明显没有人因为明显的原因而烦恼)

eval [list vcom] $compilationArgs [list -work work polar2rect/sc_corproc.vhd]

如果支持,顶部带有扩展语法({*})的版本最好。你可以确定它是否足够容易;如果不是,那就是语法错误。