在设置target_library或link_library的时候常常用到list、双引号和花括号,关于后两者的区别,实际就是花括号带有强制定义
例如set a 1;
set b {2 $a};
这时b就是2 $a。$a没有被替换成a被赋予的值。
如果set a 1;
set b “2 $a”
这时b就是2 1。$a被替换成了a被赋予的值。
而关于list有个特殊之处,如下:
如果set a 1;
list b 2 $a;
这时b是2 1。
而如果a是多个符号,如set a “1 2”或者set a {1 2}
list b 2 $a;
这时b是2 {1 2} ,就是说多了个花括号,而不是2 1 2,这样因为多了花括号就可能造成错误,
例如定义link_library时,因为通常都将$target_library加入link_library中,
假设set target_library {lib_a.db lib_b.db}
如果写成set link_library [list lib_c.db $target_library]
那么link_library就成了 lib_c.db{lib_a.db lib_b.db},而不是lib_c.db lib_a.db lib_b.db,DC就会报错:Can't read link_library file 'lib_a.db lib_b.db'。所以说不要用list,换成双引号就行了。