出于调试目的,如何查看b2中是否设置了变量?
又名。测试b2 中是否定义了变量
这并不完美,但可以判断变量是否使用echo和变量扩展定义:
:E=value
Assign value to the variable if it is unset.
示例:
echo "Variable FOO has value $(FOO:E=was_not_previously_set)" ;
将显示:如果在调用回显之前未设置FOO
,则为Variable FOO has value was_not_previously_set
。
如果您只想断言变量已定义,您可以执行以下操作:
import assert ;
assert.variable-not-empty variable_name ;
注意:我没有写$(variable_name)
(它是经过评估的(。
如果断言失败,则显示:
jamfile:line: in modules.load from module Jamfile<C:pathtojamfiledir>
error: assertion failure: Expected variable "variable_name" not to be an empty list
这是因为在b2中,正如医生所说,";未定义的变量与具有空列表的变量是无法区分的;。
例如,如果您想通过连接:$(ModuleName_TOP)/project//target
来生成目标名称,这种断言非常有用,因为如果没有定义ModuleName_TOP
,这将变成空列表,从而导致生成错误而不是b2错误。
只需测试$(variable_name)-is-not-empty
:的值
if $(variable_name)-not-empty
{
echo "not empty" ;
}
else
{
echo "empty" ;
}
CCD_ 7就是这样实现的。它之所以有效,是因为未定义的变量与空列表相同-不为空";对一个带有变量展开的空列表给出一个空列表,这相当于false。