VC编译过程中如何读取文件

最近打算给VC项目生成的exe加上版本信息,打算把版本信息放在源代码中,并且使用git的提交版本编码作为对应的exe版本。查找了一下git库目录,发现 .git\refs\heads\master 文件里面就是git的提交版本编码,不知道有没有可能把这个信息添加到源代码中?
PS:直接修改代码的话,一提交版本编码就变了;用#include方法将这个文件加到字符串定义中,会产生编译错误。

不知道有没有什么解决思路?或者其它定义exe版本的方法?

提交的版本编码应该可以预测出来的吧?提前用那个编码写入代码可以不。如果不行那提交后改编码再提交,不也可以吗?实在想要你那种方式的话就查看一下PE格式,直接写一个工具填写了

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:VC编译错误处理

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

你可以使用 git log 命令来查看提交历史,并使用一些选项参数来控制输出的形式。例如,你可以使用 --pretty=format:“%h” 来只显示短的哈希值。
你可以使用 git describe 命令来生成一个包含最近标签和提交数的字符串,作为版本号。例如,如果你在 master 分支上执行 git describe --tags ,你可能会得到类似 v1.0.4-14-g2414721 的输出,表示当前的提交是在 v1.0.4 标签之后的第 14 次提交,哈希值以 g 开头。
你可以使用 git rev-parse 命令来获取当前分支或 HEAD 的哈希值。例如,你可以执行 git rev-parse --short HEAD 来得到一个短的哈希值。
以上方法都需要在编译前手动或自动地将版本编码写入源代码中,或者通过预处理器指令来引用外部文件中的版本编码。如果你想要在不修改源代码的情况下添加版本信息,你可能需要使用一些第三方工具或库来实现。