如何使用Eclipse始终编译cpp文件?

时间:2014-01-13 08:37:32

标签: c++ eclipse compilation g++

我在我的一个cpp源文件中包含了一个unix时间戳__DATE__,以指示我的程序的构建日期。当然,默认设置只在我更改文件时编译文件,但现在我想让它始终编译。我试图搜索项目设置,但似乎需要更深入地了解编译器。我正在使用带有g ++的Eclipse。

我尝试谷歌搜索答案,但我发现很难为此找到好的关键词。

我对头文件而不是源文件进行此更改是否存在显着差异?

感谢您的回答。

2 个答案:

答案 0 :(得分:3)

您可以创建一个{pre-build'步骤touch文件(因此时间戳被修改并强制重新编译文件)。

答案 1 :(得分:1)

  

似乎需要更深入地了解编译器。

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

一种非常简单的做法如下。创建一个名为date.cpp的文件,其中包含以下内容:

#include <string>

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

您可以在某些其他源文件

中使用它
cout << "Built on " << build_time() << endl;

构建系统会跟踪您的更改,并且只会重新编译已更改的源文件(需要重新编译)。由于您不更改date.cpp文件,因此不会重新编译它。但是,您可以通过右键单击项目文件夹然后

来强制它

属性&gt; C / C ++ Build&gt;设置&gt;构建步骤&gt;构建后步骤

并将以下行添加到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,因此构建系统必须在编译应用程序时使用当前构建日期和时间重新构建它。

可能还有很多其他变种,但上面的内容在我看来足够简单并且可以解决问题。