如何通过Makefile向TCL脚本传递变量?
如何通过Makefile为TCL脚本的变量赋值?
当然可以实现,以下是两种常用的方法:
方法一:命令行直接传递变量赋值
在调用tclsh时,通过-c参数先执行变量赋值语句,再加载目标脚本。
Makefile 示例
# 可通过命令行覆盖默认值,比如 make runScript CONDITION=1 CONDITION ?= 0 runScript: tclsh -c "set condition $(CONDITION)" test.tcl
TCL脚本(test.tcl)示例
无需硬编码condition变量,直接使用即可:
if {$condition} { puts "Condition is true" } else { puts "Condition is false" }
使用方式:
- 默认值执行:
make runScript - 指定变量值执行:
make runScript CONDITION=1
方法二:通过环境变量传递
利用TCL读取环境变量的特性,在Makefile中设置环境变量后再启动脚本。
Makefile 示例
CONDITION ?= 0 runScript: CONDITION=$(CONDITION) tclsh test.tcl
TCL脚本(test.tcl)示例
读取环境变量并赋值给condition,可添加默认值避免环境变量不存在的情况:
# 如果环境变量CONDITION不存在,默认设为0 set condition [expr {[info exists ::env(CONDITION)] ? $::env(CONDITION) : 0}] if {$condition} { puts "Condition is true" } else { puts "Condition is false" }
使用方式和方法一一致,通过make runScript CONDITION=xxx指定变量值。
内容的提问来源于stack exchange,提问作者S. Li
相关产品推荐
相关产品推荐

