0

我们为我们的构建设置了一个简单的版本控制系统,以确保构建的文件始终指示它们是 Beta Debug 还是 Beta Release 构建

我将文件版本信息移动到 myapp.rc2 并创建了 version.h

    // version.h 
    // _DEBUG is defined by VS

    #define _BETA

    #ifdef _BETA
    #define FILE_DESC1   _T("BETA ")
    #else
    #define FILE_DESC1  // blank on purpose 
    #endif

    #ifdef _DEBUG
    #define FILE_DESC2   _T("Debug Version ")
    #else
    #define FILE_DESC2   _T("Release Version ") // this is greyed out in the ide when building
    #endif

    #define FILE_DESC   FILE_DESC1 FILE_DESC2


// myapp.rc2
include "version.h"

#ifndef _T
#define _T(x)   x
#endif

VS_VERSION_INFO VERSIONINFO
 FILEVERSION PROD_VER_MJR,PROD_VER_MIN,PROD_VER_UPD,JOBUILDER_BUILD
 PRODUCTVERSION PROD_VER_MJR,PROD_VER_MIN
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904e4"
        BEGIN
            VALUE "CompanyName", COMPANY_NAME
            VALUE "FileDescription", FILE_DESC
            VALUE "FileVersion", JOBBUI_VERSION
            VALUE "InternalName", "MyApp.exe" 
            VALUE "LegalCopyright", COPYRIGHT
            VALUE "OriginalFilename", "MyApp.exe"
            VALUE "ProductName", PRODUCT_NAME
            VALUE "ProductVersion", PRODUCT_VERSION
            VALUE "Comments",  COMMENTS
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

但是,当 exe 构建在调试输出目录中时,文件描述总是错误地显示“BETA Release Version”而不是“BETA Debug Version”然而 IDE 指示将使用“#define FILE_DESC2 _T(“Debug Version”)”。为什么会这样?我在另一个项目中使用了这些文件并且它们工作正常。

谢谢你...

4

2 回答 2

1

修复:在调试版本中,我将 _DEBUG 添加到:-

项目属性 > 资源 > 预处理器定义。它现在按预期工作。

于 2009-11-16T10:25:09.847 回答
0

像这样“调试”预处理器问题的最好方法是在你认为你的宏实际上得到#define'd的地方粘贴一个#error指令

一旦您知道预处理器实际采用了哪条路径,您就可以尝试找出它这样做的原因......

编辑:除了资源编译器的预处理器运行可能与编译器的预定义宏不同。

于 2009-11-15T20:25:42.903 回答