我写了一些看起来像这样的qmake:
contains( DEFINES, SOME_DEF ): DEFINES+=SOME_OTHER_DEF
结果是始终执行我认为有条件的,即DEFINES+=SOME_OTHER_DEF
我将行改为:
contains( DEFINES, SOME_DEF ){ DEFINES+=SOME_OTHER_DEF }
它的工作原理和我现在预期的一样。问题是,我不明白为什么我不能使用原始语法?
这里是contains
文档(没有解释有关使用:
的详细信息)
http://doc.qt.io/qt-5/qmake-test-function-reference.html#contains-variablename-value
以下是范围文档,它似乎支持我尝试做的事情:
http://doc.qt.io/qt-5/qmake-language.html#scopes-and-conditions
它说:
您可以...使用:运算符执行单行条件 分配。
我之前肯定以这种方式使用了:
(但我猜不会使用contains
?)。我怎么不明白?
其他信息(以可读的方式回复评论):
测试跑了:
DEFINES+=A
DEFINES+=B
contains( DEFINES, A ) : contains( DEFINES, B ) : message( 1 )
contains( DEFINES, A ) : contains( DEFINES, C ) : message( 2 )
contains( DEFINES, A ):contains( DEFINES, B ):message( 3 )
contains( DEFINES, A ):contains( DEFINES, C ):message( 4 )
结果:
Project MESSAGE: 1
Project MESSAGE: 3
所以它不是白色空间。
我认为我的问题无效。
答案 0 :(得分:0)
看起来像是关于太空。似乎以下应该有效,但我不确定
contains( DEFINES, SOME_DEF ):DEFINES+=SOME_OTHER_DEF
当我得到它时,它被设计成用作逻辑AND运算符。
conditionA:conditionB {
...
}