我已经包括一个UNIX时间戳__DATE__
在我的cpp源文件,以表明我的程序的构建日期之一。 当然使用默认设置它编译只有当我改变它,但现在我想拥有它总是被编译的文件。 我试图通过项目设置进行搜索,但似乎这需要编译器的更深入的了解。 我使用的Eclipse使用g ++。
我试图谷歌和搜索一个答案,但我发现很难找到这个好的关键字。
也就是有没有标记的差异阉我这样做改变了一个头文件,而不是源文件?
感谢您的答案。
我已经包括一个UNIX时间戳__DATE__
在我的cpp源文件,以表明我的程序的构建日期之一。 当然使用默认设置它编译只有当我改变它,但现在我想拥有它总是被编译的文件。 我试图通过项目设置进行搜索,但似乎这需要编译器的更深入的了解。 我使用的Eclipse使用g ++。
我试图谷歌和搜索一个答案,但我发现很难找到这个好的关键字。
也就是有没有标记的差异阉我这样做改变了一个头文件,而不是源文件?
感谢您的答案。
您可以创建一个“预生成”步骤, 触摸文件(所以时间戳被修改和力量重新编译的文件)。
似乎这需要编译器的更深入的了解。
不,它必须通过构建系统来完成。
一个非常简单的头脑做它的方法如下。 创建一个名为date.cpp有以下内容,别无其他单个文件:
#include <string>
std::string build_time() {
return __DATE__ " " __TIME__;
}
您可以在其他一些源文件,使用这样的
cout << "Built on " << build_time() << endl;
编译系统会跟踪你的变化和它只会重新编译后更改了的源文件(需要重新编译)。 既然你不改变date.cpp文件,它不会重新编译。 但是,您可以在项目文件夹右击迫使它,然后
属性> C / C ++编译>设置>生成步骤>后生成步骤
并添加以下行Linux上的COMAND领域:
rm -f <path to the Debug / Release directory>/date.o
你把你对<path to the Debug / Release directory>
。
在Windows中del /q
似乎做相同的rm -f
,请检查。
由于我们删除生成的目标文件date.o,构建系统必须再次使用当前版本的日期和时间,当你编译你的应用程序重建。
这可能是因为还有许多其他的变种,但上面是在我看来够简单,做的伎俩。