对于我们的构建机器,我希望在编译时基于环境变量在我的项目中定义条件预处理器。环境字符串是“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
我的语法有问题吗?
答案 0 :(得分:1)
所以,是的。我最终做的是:
contains(_MY_CUSTOM_BUILD, "AAA") {
DEFINES+= MY_CUSTOM_BUILD_AAA
}
而不是:
eval(_MY_CUSTOM_BUILD = $$"AAA") {
DEFINES+= MY_CUSTOM_BUILD_AAA
}
并且有效。