根据以环境变量的形式设置的编译开关(值为COMPILE_A
或COMPILE_B
),我想用不同的设置编译我的应用程序,例如应用程序名称和启动画面。
我做到了这一点:
在“项目/设置/C/C++/预处理器定义”中,我添加了
$(COMPILESWITCH)
(命令行选项中的结果/D "$(COMPILESWITCH)"
)。在 stdafx.h 我可以使用以下代码,这意味着我通过命令行参数正确定义了预处理器定义:
#if defined COMPILE_A
# define IDB_SPLASH IDB_SPLASH_A
# elif defined COMPILE_B
# define IDB_SPLASH IDB_SPLASH_B
# else
# error Unknown or undefined target compile switch; cannot compile!
# endif
但我注意到“ResourceView / [右键单击] / Properties”下的“Condition”属性......帮助文本说:
健康)状况确定资源的包含。例如,如果条件是 _DEBUG,则此资源将仅包含在调试版本中。
这看起来很优雅,对吧?
指定_DEBUG
为条件有效。因此,_DEBUG
通过/D _DEBUG
我的指定$(COMPILESWITCH)
也应该工作,对吧?
出于某种原因,它没有;为什么?
或者还有另一种更好的方法来实现我想要的吗?