仅在项目中发生更改时添加编译时间戳(C)

时间:2012-06-14 19:25:49

标签: c eclipse compilation makefile

我目前正在创建一个新的C项目,我遇到了需要用一些数据(包括时间和日期)标记每个编译。

这样做的标准和简单方法是:

  1. 通过简单脚本生成.c文件,添加所需信息。使用此解决方案,项目将始终生成新工件(例如.o),即使项目本身未发生任何更改(也未更改任何文件)。

  2. 已准备好.c文件,时间日期以及其他需要的东西,只有在清理完项目后才进行编译。对项目中源文件或头文件的更改不会导致更改图章(除非我们先清理项目)。

  3. 我正在寻找的是介于两者之间的东西: 当项目文件发生变化时,请确保添加编译标记。

2 个答案:

答案 0 :(得分:2)

我不确定eclipse,但是如果你使用make和makefile,你可以使用以下示例中的想法(在cygwin环境中工作)。

make执行链接命令(最后一个)时,它还会使用嵌入其中的时间编译文件。当可执行文件是最新的时,不会调用链接,因此不会更改时间戳。为了实现这一点,您不应该通知make带有时间戳的文件是任何事情的先决条件。

# Makefile
a.exe: a.o # note: doesn't depend on mytime.c
    gcc a.o mytime.c -o a.exe # note: cannot use ld, must link with gcc

a.o: a.c
    gcc -c a.c

// mytime.c
char* mytime = __TIME__;

// a.c
#include <stdio.h>
extern char* mytime;
int main()
{
    printf("%s\n", mytime);
}

答案 1 :(得分:1)

每当运行git commitgit pull时,您也可以使用git hook创建(未版本化的)时间戳.c文件。