我已经在我的一个cpp源文件中包含了一个unix时间戳__DATE__
来指示我的程序的生成日期。当然,使用默认设置时,它仅在我更改它时编译文件,但现在我希望将其始终编译。我试图通过项目设置进行搜索,但似乎需要更深入地了解编译器。我用g ++使用Eclipse。如何总是用Eclipse编译cpp文件?
我试图谷歌和搜索答案,但我发现很难找到这个好的关键字。
也有一个可标记的区别我是否做这个更改为头文件而不是源文件?
感谢您的答案。
我已经在我的一个cpp源文件中包含了一个unix时间戳__DATE__
来指示我的程序的生成日期。当然,使用默认设置时,它仅在我更改它时编译文件,但现在我希望将其始终编译。我试图通过项目设置进行搜索,但似乎需要更深入地了解编译器。我用g ++使用Eclipse。如何总是用Eclipse编译cpp文件?
我试图谷歌和搜索答案,但我发现很难找到这个好的关键字。
也有一个可标记的区别我是否做这个更改为头文件而不是源文件?
感谢您的答案。
您可以创建一个'预构建'步骤,即文件(所以时间戳被修改并强制重新编译文件)。
似乎这需要更深入的理解编译器。
不,它必须由构建系统完成。
一个非常简单的做法如下。创建一个名为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,因此编译系统时必须使用当前编译日期和时间重新编译它。
这很可能是有很多其他的变种,但上述是在我看来很简单,并伎俩。