资源编译器可以很好地处理包含和预处理器定义。例如,它并不适用于包含Windows.h。但我想不出任何为什么你需要在资源编译器使用的文件中需要它的一个很好的理由。只需使用不包含任何引起警告的头文件,并且只需定义您需要的内容即可。作为一个例子,我们在这里使用了典型的版本做这个伟大工程:有一个单主.rc文件,看起来像这样:
#include <winver.h>
#define stringize(x) stringizei(x)
#define stringizei(x) #x
#ifdef VRC_INCLUDE
#include stringize(VRC_INCLUDE)
#endif
#ifdef _WIN32
LANGUAGE 0x9,0x1
#pragma code_page(1252)
#endif
1 VERSIONINFO
FILEVERSION VRC_FILEVERSION
PRODUCTVERSION VRC_PRODUCTVERSION
FILEFLAGSMASK 0x1L
FILEFLAGS VS_FF_DEBUG
FILEOS VOS__WINDOWS32
FILETYPE VRC_FILETYPE
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "CompanyName", stringize(VRC_COMPANYNAME)
VALUE "FileDescription", stringize(VRC_FILEDESCRIPTION)
VALUE "FileVersion", stringize(VRC_FILEVERSION)
VALUE "LegalCopyright", stringize(VRC_COPYRIGHT)
VALUE "InternalName", stringize(VRC_ORIGINALFILENAME)
VALUE "OriginalFilename", stringize(VRC_ORIGINALFILENAME)
VALUE "ProductName", stringize(VRC_PRODUCTNAME)
VALUE "ProductVersion", stringize(VRC_PRODUCTVERSION)
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
从这里开始的可能性是几乎无限的。任一定义VRC_INCLUDE
包含所有VRC_...
定义一个包含文件的全路径:
rc /d VRC_INCLUDE=$(VersionMainInclude) ... version.rc
或提供的所有定义
rc /d VRC_COMPANYNAME=mycompany ... version.rc
或两者的组合。
向您展示的可能性,这里是目前我在做什么使用Git版本控制的所有项目:
你是对的,我错过了version.h包含另一个打开潘多拉盒子的.h。 – sorin