2

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

标准而简单的方法是:

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

  2. 已经准备好一个 .c 文件,如果需要,可以包含timedate和其他内容,仅在清理项目后编译它。项目中源文件或头文件的更改不会导致标记被更改(除非我们先清理项目)。

我正在寻找的是介于两者之间的东西:当项目文件更改时,只有在那时,确保添加编译标记。

4

2 回答 2

2

我不确定eclipse,但如果你使用makemakefiles,你可以使用下面例子中的想法(在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);
}
于 2012-06-14T20:39:56.360 回答
1

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

于 2012-06-14T21:02:01.350 回答