【发布时间】:2021-10-27 14:05:19
【问题描述】:
我正在使用 cmake 的 configure_file() 函数在 C 构建中设置一些版本信息。生成的输出如下所示:
#pragma once
// Time
#define VERSION_HOUR 15
#define VERSION_MINUTE 53
#define VERSION_SECOND 56
我通过 cmake 的 string(TIMESTAMP) 功能获得这些值:
# Time
string(TIMESTAMP hour "%H")
string(TIMESTAMP min "%M")
string(TIMESTAMP sec "%S")
我遇到的问题是string(TIMESTAMP) 返回的值有前导零。例如,我可以得到这样的结果:
#pragma once
#define VERSION_HOUR 15
#define VERSION_MINUTE 03
#define VERSION_SECOND 06
在这种情况下,代码库的编译将失败,因为代码中的某些部分基本上如下所示:
const build_version_t build_version = {
.hour = VERSION_HOUR,
.minute = VERSION_MINUTE,
.second = VERSION_SECOND
}
其中.hour、.minute 和.second 是uint8_t 类型的字段。
带有前导零的文字被解释为八进制。
从相应的 cmake 变量中去除前导零的最简单/最佳方法是什么?
【问题讨论】:
-
sooo
string(REGEX REPLACE ....?
标签: cmake