根据编译开关(值 COMPILE_ACOMPILE_B),其设置的形式envorinment变,我想汇编的我的程序有不同的设置,就像应用程序的名称和启动画面。

我得到这个:

  1. 在"项目/设置/C/C++/预处理器定义"我加入 $(COMPILESWITCH) (结果命令行选项 /D "$(COMPILESWITCH)").

  2. 在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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top