gpt4 book ai didi

c++ - 在应用程序版本中使用 svn 修订号

转载 作者:可可西里 更新时间:2023-11-01 17:42:05 26 4
gpt4 key购买 nike

在 VS2010 解决方案(不是 .NET)中,我希望将 svn 修订号作为应用程序版本的一部分。

目前我们不使用 makefile,只使用 VS 解决方案/项目设置。

我想在编译时获取工作拷贝修订号,将其存储到一个变量中,以便稍后在代码中使用它来显示版本号。

到目前为止,我已经成功地使用 svnversion 将最新版本的工作拷贝作为预构建事件获取。

"C:\Program Files\CollabNet\Subversion Client\svnversion.exe" -n $(SolutionDir)

在构建时,我可以看到正确的修订号返回到 output 控制台。

现在的问题是,如何将这个值存储到一个可以在代码中使用的变量中?

我已经尝试定义一个预编译器变量 (_SVNREV) 并使用它来直接从 pre-build 事件框中保存上述 cmd 的结果,但这不起作用。

_SVNREV="C:\Program Files\CollabNet\Subversion Client\svnversion.exe" -n $(SolutionDir)
%_SVNREV%="C:\Program Files\CollabNet\Subversion Client\svnversion.exe" -n $(SolutionDir)
%_SVNREV="C:\Program Files\CollabNet\Subversion Client\svnversion.exe" -n $(SolutionDir)
$(_SVNREV)="C:\Program Files\CollabNet\Subversion Client\svnversion.exe" -n $(SolutionDir)

这些实际上都不起作用。

解决方案:我无处可去,试图从 VS 环境中更新变量。所以我采取了另一条路线,调用脚本作为预构建步骤,获取工作拷贝的 svn 修订版,然后使用该信息创建头文件。

对于任何感兴趣的人,这是 svnrev.bat:

@echo off
set cmd="C:\"Program Files\CollabNet\Subversion Client"\svnversion.exe -n %1 "
set versionfile=%1/version.h
FOR /F %%i IN ('%cmd%') DO SET SVNVER=%%i

echo Detected program revision %SVNVER% in %1
echo #pragma once > %versionfile%
echo #define _SVNVER "%SVNVER%" >> %versionfile%

最佳答案

到目前为止我想到的最好的猜测是在预构建事件中生成一个包含 svnversion 的头文件。

例如我创建了一个批处理脚本 version.bat:

@echo off
FOR /F "tokens=*" %%i IN ('call svnversion') DO echo #define SVNVERSION "%%i" > svnversion.h

无论我想获得 svnversion,我只需 #include "svnversion.h"

关于c++ - 在应用程序版本中使用 svn 修订号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12057237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com