使用 qmake 检索 VS 中的修订号
我当前的工作流程:
hg update
(或用于检查修订的任何内容)MyProject.pro
→qmake< /code>
→
MyProject.vcproj
- 打开 Visual Studio,编辑文件
- 构建项目
在构建步骤中,如何使用信息更新我的 config.h
头文件来自版本控制系统(例如hg id
)?
MyProject.vcproj
是由 qmake
生成的,所以我不应该手动编辑它。
My current workflow:
hg update
(or whatever one uses to check out a revision)MyProject.pro
→qmake
→MyProject.vcproj
- Open Visual Studio, edit files
- Build project
During the build step, how can I update my config.h
header file with information from version control system (e.g. hg id
)?
MyProject.vcproj
is generated by qmake
, so I shouldn't edit it by hand.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以从 qmake 内部执行外部命令。在源代码中提供信息的最简单方法是使用定义:
我不确定是否可以从 qmake 编辑外部文件。您可以使用外部工具,但在 Windows 上通常没有 sed 之类的工具,因此可能会出现一些问题。
You can execute external commands from inside qmake. The easiest way to make the information available in your sources would be to use a define:
I'm not sure if you can edit an external file from qmake. You could use an external tool, but on Windows you normally don't have things like
sed
, so it might be a little more problematic.您可以使用自定义构建目标和
PRE_TARGETDEPS
关键字来实现此目的。假设 config.h.in 具有以下格式:您可以定义一个自定义构建目标,该目标将处理
hgid.h.in
并输出到hgid.h< /code> 在构建主要目标之前,如下所示:
You can accomplish that using a custom build target and the
PRE_TARGETDEPS
keyword. Assumingconfig.h.in
has the folowing format:You can define a custom build target that will process
hgid.h.in
and output tohgid.h
prior to building your main target as follows:一种选择是启用关键字扩展。将类似的内容放入您的 hgrc(或 Mercurial.ini,如果您喜欢的话)中:
然后在 config.h 中放入:
您可能需要从您将得到的“$HGREV: deadbeefdeadbeef $”中解析十六进制值,但是这可以通过访问 HGREV 定义的任何代码轻松完成。
One opton is to enable the Keyword Extension. Put something like this in your hgrc (or Mercurial.ini if that's your thing):
Then in config.h put:
You might need to parse the hex value out of the "$HGREV: deadbeefdeadbeef $" that you'll get, but that's easily done by whatever code is accessing the HGREV define.
除了 Lukáš Lalinský 和 goodrone 的评论之外,我还想提一下 qmake 可以直接链接到脚本,而不仅仅是它的输出。所以可以说
,脚本将为每个目标重新执行。
In addition to Lukáš Lalinský and goodrone's comment, I'd like to mention that qmake can link directly to the script, not only to it's output. So one can say
and the script will be freshly executed for every single target.