告知是否在boost build/b2/bjam中定义了变量



出于调试目的,如何查看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

最新更新