2014-01-13 32 views
1

我已经在我的一个cpp源文件中包含了一个unix时间戳__DATE__来指示我的程序的生成日期。当然,使用默认设置时,它仅在我更改它时编译文件,但现在我希望将其始终编译。我试图通过项目设置进行搜索,但似乎需要更深入地了解编译器。我用g ++使用Eclipse。如何总是用Eclipse编译cpp文件?

我试图谷歌和搜索答案,但我发现很难找到这个好的关键字。

也有一个可标记的区别我是否做这个更改为头文件而不是源文件?

感谢您的答案。

回答

2

您可以创建一个'预构建'步骤,即文件(所以时间戳被修改并强制重新编译文件)。

1

似乎这需要更深入的理解编译器。

不,它必须由构建系统完成。

一个非常简单的做法如下。创建一个名为date.cpp有以下内容,别无其他单个文件:

#include <string> 

std::string build_time() { 
    return __DATE__ " " __TIME__; 
} 

你可以在一些其他源文件,使用这样的

cout << "Built on " << build_time() << endl; 

构建系统跟踪你的更改,它只会重新编译已更改的那些源文件(需要重新编译)。由于您没有更改date.cpp文件,因此不会重新编译它。但是,您可以在项目文件夹右击迫使它,然后

属性> C/C++编译>设置>生成步骤>后期生成步骤

,并添加以下行至COMAND场在Linux上:

rm -f <path to the Debug/Release directory>/date.o 

你在哪里把你的<path to the Debug/Release directory>

在Windows上del /q好像和rm -f一样,请检查。

由于我们删除了生成的目标文件date.o,因此编译系统时必须使用当前编译日期和时间重新编译它。

这很可能是有很多其他的变种,但上述是在我看来很简单,并伎俩。