в tcl-скрипте exec make check RUNTESTFLAGS = "compile.exp --target_board = atmega128-sim" не работает - PullRequest
2 голосов
/ 15 июля 2011

Я пытаюсь запустить gcc testsuite, используя скрипт драйвера в tcl.Когда я пишу

if {[catch {exec make check RUNTESTFLAGS="compile.exp --target_board=atmega128-sim"} errmsg ]} {
    puts "Test finished with failures\n $errmsg"
} else {
    puts "Test finished"
}

Это выдает ошибку как

Тест завершен с ошибками

make: нераспознанная опция `--target_board = atmega128-sim" '

Использование: make [options] [target] ... ......

Но если я удаляю compile.exp из RUNTESTFLAGS, он отлично работает.

if {[catch {exec make check RUNTESTFLAGS="--target_board=atmega128-sim"} errmsg ]} { 

.....

Это из-за двойных кавычек, присутствующих в аргументе RUNTESTFLAGS? Мне нужно запустить make check с разными RUNTESTFLAGS. Пожалуйста, предложите способ достижения этого.

Заранее спасибо !!

1 Ответ

7 голосов
/ 15 июля 2011

Прежде всего, суть этого вопроса:

exec make check RUNTESTFLAGS="compile.exp --target_board=atmega128-sim"

Все остальное - просто (правильная) упаковка. Проблема в том, что вы используете приведенный выше синтаксис оболочки Bourne, а не синтаксис Tcl, поэтому приведенное выше заканчивается тем, что RUNTESTFLAGS имеет значение "compile.exp (с кавычкой), а остальное отправляется в качестве другого аргумента для создания. Не то, что вы хотите! (Tcl позволяет начинать двойные кавычки только с начала слова; bash более мягок.) Правильная версия:

exec make check "RUNTESTFLAGS=compile.exp --target_board=atmega128-sim"

Но проще и намного яснее разделить это, как это:

set runTestFlags "compile.exp --target_board=atmega128-sim"
exec make check RUNTESTFLAGS=$runTestFlags
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...