对于字符串文字,qmake eval函数“总是为true”

时间:2013-05-28 16:04:21

标签: qt qmake

对于我们的构建机器,我希望在编译时基于环境变量在我的项目中定义条件预处理器。环境字符串是“MY_CUSTOM_BUILD”,根据其值,我想添加定义。

我的项目文件类似于:

_MY_CUSTOM_BUILD = $$(MY_CUSTOM_BUILD)

eval(_MY_CUSTOM_BUILD = $$"AAA") {
    DEFINES+= MY_CUSTOM_BUILD_AAA
}

eval(_MY_CUSTOM_BUILD = $$"BBB") {
    DEFINES+= MY_CUSTOM_BUILD_BBB
}

但是,在代码中,似乎总是定义“MY_CUSTOM_BUILD_AAA”和“MY_CUSTOM_BUILD_BBB”,无论环境字符串是否存在,或者它的值。

#ifdef MY_CUSTOM_BUILD_AAA
 Blah();    <--- this code always compiles regardless.
#endif

#ifdef MY_CUSTOM_BUILD_BBB
 Blah2();    <--- this code always compiles regardless.
#endif

我的语法有问题吗?

1 个答案:

答案 0 :(得分:1)

所以,是的。我最终做的是:

contains(_MY_CUSTOM_BUILD, "AAA") {
    DEFINES+= MY_CUSTOM_BUILD_AAA
}

而不是:

eval(_MY_CUSTOM_BUILD = $$"AAA") {
    DEFINES+= MY_CUSTOM_BUILD_AAA
}

并且有效。