将 Mercurial 变更集作为版本信息注入 C 可执行文件中

2023-11-23

我希望我正在开发的项目的可执行文件能够记录最新的 Mercurial 变更集,以便当用户抱怨错误行为时,我可以跟踪他们正在使用的版本。我的一些可执行文件是 Python 的,其他是 C 编译的。有没有办法自动执行此操作,或者您能给我指出一些可以展示解决方案的项目吗?

我在我的项目中使用 autoconf...以防让解决方案变得更容易。

Thanks!

Setjmp


执行此操作的常用方法是使用 m4_esyscmd。例如,autoconf 在 build-aux 中分发一个脚本,该脚本从 git 存储库生成版本号并调用 AC_INIT,如下所示:



AC_INIT([GNU Autoconf], m4_esyscmd([build-aux/git-version-gen .tarball-version]), 
  [[email protected]])
  

您通常可以在不分发脚本的情况下逃脱并执行一些简单的操作,例如:



AC_INIT([Package name], m4_esyscmd([git describe --dirty | tr -d '\012']), 
  [bug-report-address])
  

使用您想要生成版本号的任何命令,而不是 git-describe。一个重要的细节是它不应该有尾随换行符(因此 tr 后面跟着 git-describe)。

此技术的一个主要缺点是版本号仅在运行 autoconf 时生成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Mercurial 变更集作为版本信息注入 C 可执行文件中 的相关文章

随机推荐

  • log4j ConversionPattern 时间戳(微秒)

    我想在使用 log4j 生成的日志文件的每个条目的时间戳中添加微秒 这可能吗 我查过官方文档 但没有提到毫秒以下的单位 现在我有一个如下所示的转换模式 d dd MM yyyy HH mm ss SSS 5p t m n 在日期转换模式中
  • 您建议将哪个数据库与 C# (.NET) 应用程序一起使用?

    我正在制定一个小项目计划 当我需要决定使用什么本地数据库系统时 输入数据将存储在网络服务器上 托管 MySQL DB 这个想法是建立一个流程来下载所有必要的数据 例如在午夜 并处理它们 然而 会有很多输入和处理阶段 所以我需要使用某种本地数
  • 处理器有哪些优化代码的技巧?

    我正在寻找诸如代码重新排序之类的东西 这些东西甚至可能在多处理器的情况下破坏代码 最重要的一个是内存访问重新排序 如果没有内存栅栏或序列化指令 处理器可以自由地重新排序内存访问 某些处理器架构对其可以重新排序的数量有限制 Alpha 因最弱
  • 如何使用 lambda 初始化映射?

    我想在单个语句中声明一个完全填充的映射字段 可能包含多个嵌套语句 如下所示 private static final Map
  • Ruby 字符串连接问题

    这有效 irb main 001 0 gt name Rohit Sharma gt Rohit Sharma 但这并不 irb main 001 0 gt fname Rohit gt Rohit irb main 002 0 gt ln
  • 根据眼睛图像进行注视估计

    到目前为止我已经能够准确地检测瞳孔和眼角 您可以在此处看到我在回答自己的问题时上传的一些快照 执行稳定的眼角检测 这是我到目前为止所做的 我通过查看 TLCP TRCP 和 BLCP 来校准用户的视线 在哪里 CP calibration
  • 将大数据加载到 TensorFlow 2.0 中,而不将其加载到 RAM 上

    我已经处理并保存了大量视频和音频文件数据集 大约 8 到 9 GB 的数据 数据保存为 2 个 numpy 数组 每个数组对应一种模态 文件的形状为 number of examples maximum time length featur
  • 带有 ViewPager2 的 BottomSheetBehavior 无法通过嵌套的 RecyclerView 滚动向下滚动

    我有一个类似的观点BottomSheet行为这个视图有ViewPager2里面 每个ViewPager2的页面都是一个垂直的RecyclerView 问题是 当当前垂直 RecyclerView ViewPager 的页面 无法再垂直滚动时
  • 在 swift4.1 中将 Any 转换为 Float 总是失败

    在以前的版本中 要从 a 获取浮点值 String Any 字典 我可以用let float dict somekey as Float 但是在swift4 1中 不起作用 似乎是这样的类型dict somekey 已被隐含地推断为Doub
  • 如何从 SqlDataReader 解析 Nullable

    DateTime TryParse 方法采用 DateTime 作为参数 而不是 DateTime 现在我有以下代码 if DateTime TryParse reader Placed ToString out placed throw
  • 在 Windows Kafka 上删除主题时出现 AccessDeniedException

    我刚刚在我的 Windows 机器上安装了 Kafka 来自 Confluence Platform 我启动了 Zookeeper 和 Kafka 并创建主题 生产和消费它们的工作 然而 一旦我删除一个主题 Kafka 就会崩溃 如下所示
  • 如何避免 Selenium 中的 StaleElementReferenceException - Python

    我陷入了编写 Python Selenium 脚本的困境 似乎无法令人满意地解决我收到的这个 StaleElementReferenceException 我已加载页面并单击一个按钮 该按钮将打开一个表单 允许用户向订单添加新的信用卡 此时
  • 如何用java转换巨大的xml文件?

    正如标题所说 我有一个巨大的 xml 文件 GB
  • Angularjs 后接收钩子或类似的?

    有没有一种方法可以在每次从服务器返回响应后调用一个函数 而无需在回调中显式调用它 主要目的是我确实有一个通用错误处理程序服务 我在每个请求的回调中调用它 并且我想在某处指定它并且它应该被自动调用 我给了Gloopy一个 1的解决方案 但是
  • 如何冻结无法冻结的可冻结对象

    在我的场景中 我想先冻结不变的 BitmapCacheBrush 然后再在后台任务中渲染它 不幸的是 我收到错误 此 Freezable 无法冻结 是否有任何解决方法或黑客方法冻结也不可冻结的对象 也许可以通过反射设置正确的属性来达到这个目
  • jQuery UI 日期选择器不会显示 - 包含完整代码

    我在显示 jQuery 日期选择器时遇到问题 如下所示 http jqueryui com demos datepicker 我相信我下载了所有正确的文件 但可以肯定的是 我从头开始并破解了演示网站 不是全部 而是我认为重要的部分 结果是没
  • 将 Bitbucket 部署到 Azure 网站:添加私有 nuget 包服务器

    我已经在 Azure 上建立了一个网站 通过 Bitbucket 存储库进行部署 当尝试安装存储在私有 nuget 服务器 而不是 nuget org 上 的 nuget 包时 该过程会失败 有没有办法指定从何处还原 nuget 包 以便
  • 如果活动崩溃,如何清除通知?

    在我的应用程序中 我正在创建一个带有 FLAG ONGOING EVENT 标志设置的通知 Notification notification new Notification iconId text System currentTimeM
  • 在某些代理关闭后如何更改主题领导者或删除分区?

    我们有一个带有 4 个代理的 kafka 集群 以及一些具有副本因子 1 和 10 分区的主题 某一时刻 我们的 4 台服务器中的 2 台与 kafka 集群发生故障 现在我们有 2 个具有相同主题的经纪人 当我运行命令时 kafka to
  • 将 Mercurial 变更集作为版本信息注入 C 可执行文件中

    我希望我正在开发的项目的可执行文件能够记录最新的 Mercurial 变更集 以便当用户抱怨错误行为时 我可以跟踪他们正在使用的版本 我的一些可执行文件是 Python 的 其他是 C 编译的 有没有办法自动执行此操作 或者您能给我指出一些