2016-08-29 1 views
2

Ich versuche, ein Tcl-Skript in Vivado GUI Tcl Console auszuführen und mein Skript braucht ein Argument, um zu entscheiden, welche Art von Lauf (Synth, Impl, Bitgen etc.) hat konfiguriert werden. Ich weiß, dass mit -tclargs Argumente übergeben werden konnte, wenn das Skript im Vivado-Befehlszeilenmodus ausgeführt wird. Etwas wie:Wie übergeben Argumente an Tcl-Skript in Vivado GUI tcl Konsole

vivado -mode batch -source <filename> -tclargs <arguments> 

Ich versuchte das gleiche in Vivado GUI-Modus und bekam einen Fehler.

ERROR: [Common 17-170] Unknown option '-tclargs', please type 'source -help' for usage info. 

Lauf 'source -help':

Syntax: 
source [-encoding <arg>] [-notrace] [-quiet] [-verbose] <file> 

Usage: 
    Name   Description 
    ------------------------ 
    [-encoding] specify the encoding of the data stored in filename 
    [-notrace] disable tracing of sourced commands 
    [-quiet]  Ignore command errors 
    [-verbose] Suspend message limits during command execution 
    <file>  script to source 

von auf -help suchen erhalte ich das Gefühl, dass es nicht möglich ist, dies zu tun. Ich kann auch keine Dokumente dafür finden. Ich würde gerne wissen, ob es einen Weg gibt, dies zu erreichen.

+2

Vielleicht wäre es möglich, nur argv und argc vor dem Aufruf der Quelle zu setzen? –

+0

@haggai_e, danke. Es funktioniert jetzt. –

Antwort

2

Der Befehl source richtet die Argumente nicht ein; es ist mehr wie Cs #include als alles andere wirklich. Wenn das Skript source erwartet argv und argc gesetzt wird - als ob das Skript als ein Programm ausgeführt wurde - dann sollten Sie nur set sie vor der source. Sie sind gewöhnliche Variablen, soweit Tcl betroffen ist; Sie sind zufällig standardmäßig eingerichtet.

Möglicherweise müssen Sie auch argv0 für das Skript festlegen. Einige Programme erwarten dies, wenn sie im nicht interaktiven Modus ausgeführt werden.

set argv [list "a b c" foo bar 123] 
set argc [llength $argv] 
set argv0 theScript.tcl 
source $argv0 
Verwandte Themen