【问题标题】:Editing .rc resource files via script or command line?通过脚本或命令行编辑 .rc 资源文件?
【发布时间】:2021-03-23 13:03:52
【问题描述】:

尝试使用 Jenkins 在 C++ Windows 应用构建中自动化我们的一些流程。我们想要做的是自动更新资源文件(.rc)中的版本信息。目前有一个脚本会提示用户他们想要发布哪个版本,并为自动构建做好一切准备,即创建分支等。

我们希望更新 .rc 文件的过程的一部分。是否有可以从命令行运行的以编程方式编辑 .rc 文件的工具?

【问题讨论】:

  • 不确定是否有帮助,但您可以将VERSIONINFO 字段(在.rc 文件中)中的值替换为宏(在该.rc 包含的.h 文件中定义)。因此,您可以在标题中使用 PRODUCTVERSION MyVersion 和 #define MyVersion "1.2.3.4" 而不是 PRODUCTVERSION "1.2.3.4"。这让任务变得更简单了,也许 - 只是修改(或写入).h 文件。
  • 你能对 FileVersion 和 ProductVersion 字符串做同样的事情吗?

标签: visual-studio jenkins resource-files


【解决方案1】:

首先,您应该将下面的代码放入 Visual Studio 既不解释也不修改的 .rc2 文件中,并将该文件包含在您的 .rc 文件中。

为了产生版本字符串,您需要两个辅助函数将 stringified 数字连接成一个字符串。

变量F1 到F4 可以通过包含头文件来定义。理想情况下,您会根据用户输入创建一个仅定义这四个变量的标题。这使您的代码库的其余部分保持不变。产品版本的方法相同。

#define F1 1  // Defined by an included header
#define F2 2
#define F3 3
#define F4 4

// MyAppVersionInfo.rc2
#define STRTMP(V1, V2, V3, V4) #V1 "." #V2 "." #V3 "." #V4
#define STR(V1, V2, V3, V4) STRTMP(V1, V2, V3, V4)
#define FVC F1,F2,F3,F4
#define FVS STR(F1,F2,F3,F4)

VS_VERSION_INFO VERSIONINFO
  FILEVERSION    FVC
  ...
    VALUE "FileVersion", FVS

请注意,我在此示例中选择了非常短的标识符以使 stackoverflow.com 满意。

【讨论】:

  • 只需确保将#include "MyAppVersioninfo.rc2" 添加到编译时指令 编辑框,而不是“只读符号指令”。否则 VS 会自动将 VS_VERSION_INFO 的副本添加到 .rc 文件中,并展开所有宏。
猜你喜欢
  • 1970-01-01
  • 2014-11-03
  • 2013-11-20
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2016-03-13
  • 2011-11-06
相关资源
最近更新 更多