代码之家  ›  专栏  ›  技术社区  ›  foraidt

如何有条件地编译VC6资源

  •  1
  • foraidt  · 技术社区  · 16 年前

    COMPILE_A COMPILE_B ),它是以环境变量的形式设置的,我想用不同的设置编译我的应用程序,比如应用程序名和启动屏幕。

    我走了这么远:

    1. $(COMPILESWITCH) (结果显示命令行选项) /D "$(COMPILESWITCH)"

    
        #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 随着情况的发展。以便 _调试 是通过 /D _DEBUG 我的 $(编译开关)
    由于某种原因,它没有;为什么?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Community CDub    5 年前

    资源编译器使用自己的预处理器。

    编辑:字符串资源

    以上内容不适用于字符串资源,因为它们没有“条件”属性。。。

    我选择了使用 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