1

对于我们的构建机器,我希望在编译时根据环境变量在我的项目中定义条件预处理器。环境字符串是“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

我在语法上做错了吗?

4

1 回答 1

1

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

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

而不是:

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

它奏效了。

于 2013-05-30T17:21:10.880 回答