Проблема запуска программы (vcom) с несколькими аргументами в TCL - PullRequest
1 голос
/ 21 декабря 2010

Я пытаюсь запустить программу (vcom) из сценария TCL с дополнительными параметрами:

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 Ответ

5 голосов
/ 21 декабря 2010

«Проблема» в том, что Tcl осторожно относится к управлению пространством. Это очень полезно, если у вас есть аргументы с пробелами (например, много полных имен файлов на машинах Windows), но иногда это может расстраивать, если вы хотите, чтобы список был автоматически разбит. Исправление состоит в том, чтобы указать Tcl, что это является чем-то, что вы хотите разбить на несколько слов.

Лучший ответ требует по крайней мере Tcl 8.5 (узнайте, какая у вас версия с info tclversion, info patchlevel или package 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]

Лучше всего поддерживается версия с синтаксисом расширения ({*}). Вы можете определить, достаточно ли это легко; если это не так, это синтаксическая ошибка.

...