__DATE__ 和 __TIME__ 编译

Posted

技术标签:

【中文标题】__DATE__ 和 __TIME__ 编译【英文标题】:__DATE__ and __TIME__ compilation 【发布时间】:2016-05-19 14:13:19 【问题描述】:

我正在为我的项目使用 CMake,并且其中一个文件“tools.cpp”包含

__DATE__ and __TIME__

获取编译时间。但是,这个文件不是每次都编译的,也就是说如果我只修改main.cpp,我不会得到最后一次编译时间。

无论我更改了什么文件,我如何才能获得上次编译时间?谢谢。

【问题讨论】:

在 make 文件中添加一个 make 规则,以便在 tools.cpp 文件上调用 touch 实用程序。 您是否尝试在 tools.o 和项目中的所有其他目标文件之间添加依赖关系? 这是个好主意,但我真的不知道该怎么做。 【参考方案1】:

如果您正在寻找构建时间和日期,您有两个选择:1)全部重建; 2) 创建一个更改日期和时间的工具。

在我们的系统中,我们有一个包含函数的文件:

std::string
Get_Build_Date()

  return "06/28/2023";

我们编写了一个脚本,将函数中的日期字符串替换为构建日期。

这允许仅构建日期文件的最低限度。

编辑 1:替代方案:触摸文件 您可以修改生成文件,以便“触及”日期文件。 *nix 操作系统有一个命令touch,它将文件的修改日期设置为当前时间和日期。

【讨论】:

以上是关于__DATE__ 和 __TIME__ 编译的主要内容,如果未能解决你的问题,请参考以下文章

C语言 - 预处理

宏表达式与函数#undef条件编译

C进阶详解预处理指令

常见的编译器内置宏

代码中,使用__DATE__宏,获取程序编译时间,如何保证每次编译代码(非重新生成方式),都能更新__DATE__的值?

__FILE__,__LINE__