我正在尝试从带有额外选项的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)它也可以运行.
我怎样才能解决这个问题?
谢谢,亨德里克.
"问题"是Tcl在管理空间时要小心.如果您有空格参数(例如Windows机器上的许多完整文件名),这非常有用,但如果您希望自动分解列表,有时会令人沮丧.修复是向Tcl表明这是你想要拆分成多个单词的东西.
最好的答案至少需要Tcl的8.5(找出你与有什么版本info tclversion,info patchlevel或package 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)
{*}如果支持,顶部带有扩展语法()的版本最好.你可以确定它是否足够容易; 如果不是,那就是语法错误.