如何有条件的编制VC6资源
-
10-07-2019 - |
题
根据编译开关(值 COMPILE_A
或 COMPILE_B
),其设置的形式envorinment变,我想汇编的我的程序有不同的设置,就像应用程序的名称和启动画面。
我得到这个:
在"项目/设置/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/[右击]/性能"...帮助文本说,这样的:
条件确定列入的 资源。例如,如果 条件是_DEBUG,这种资源 将只包括在调试 基础之上。
这看起来喜欢优雅的方式这样做,对吗?
指定 _DEBUG
作为条件的工作。所以为 _DEBUG
被指定的通过 /D _DEBUG
我 $(COMPILESWITCH)
还应的工作,对吗?
由于某些原因,它不;为什么?
或是甚至有另一个更好的方式来实现我想要什么?
解决方案
我猜我只是解决我的问题...
资源编译器使用自己的预处理器。
因此,同一预处理器的定义已被添加下的"项目/设/资源/预处理器定义".
编辑:串资源
上述不适用于串的资源,因为他们没有一个"条件"的财产...
我选择使用 res\<projectname>.rc2
定资源的文件,它不会被感动的资源编辑器。内容看起来像这样
#if defined(COMPILE_A) STRINGTABLE DISCARDABLE BEGIN IDR_MAINFRAME "AppTitle A" END #else # if defined(COMPILE_B) STRINGTABLE DISCARDABLE BEGIN IDR_MAINFRAME "AppTitle B" END # else # error Compile switch not defined or unknown; cannot compile! # endif #endif
不隶属于 StackOverflow