在TCL中启动具有多个参数的程序(vcom)时出现问题

Hen*_*rik 1 arguments tcl

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

set compilationArgs "-quiet -93"
vcom $compilationArgs -work work polar2rect/sc_corproc.vhd
Run Code Online (Sandbox Code Playgroud)

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

# 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.
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能解决这个问题?

谢谢,亨德里克.

Don*_*ows 5

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

最好的答案至少需要Tcl的8.5(找出你与有什么版本info tclversion,info patchlevelpackage require Tcl).

vcom {*}$compilationArgs -work work polar2rect/sc_corproc.vhd
Run Code Online (Sandbox Code Playgroud)

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

eval vcom $compilationArgs -work work polar2rect/sc_corproc.vhd
Run Code Online (Sandbox Code Playgroud)

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

eval [list vcom] $compilationArgs [list -work work polar2rect/sc_corproc.vhd]
Run Code Online (Sandbox Code Playgroud)

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