【问题标题】:How to always compile a cpp file with Eclipse?如何始终使用 Eclipse 编译 cpp 文件?
【发布时间】:2014-01-31 22:30:40
【问题描述】:

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

我尝试用谷歌搜索并搜索答案,但我发现很难找到合适的关键字。

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

感谢您的回答。

【问题讨论】:

    标签: c++ eclipse compilation g++


    【解决方案1】:

    您可以创建一个“预构建”步骤,其中touch 文件(因此时间戳被修改并强制重新编译文件)。

    【讨论】:

      【解决方案2】:

      看来这需要对编译器有更深入的了解。

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

      一个非常简单的方法如下。创建一个名为 date.cpp 的文件,其内容如下:

      #include <string>
      
      std::string build_time() {
          return __DATE__ " " __TIME__;
      }
      

      你可以在一些other源文件中这样使用它

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

      构建系统会跟踪您的更改,它只会重新编译那些已更改的源文件(必须重新编译)。由于您没有更改 date.cpp 文件,因此不会重新编译它。但是,您可以通过右键单击项目文件夹来强制它,然后

      属性 > C/C++ 构建 > 设置 > 构建步骤 > 构建后步骤

      并将以下行添加到 Linux 上的命令字段:

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

      你把你的发给&lt;path to the Debug / Release directory&gt;。

      在 Windows 上 del /q 似乎与 rm -f 做的一样,请检查。

      由于我们删除了生成的目标文件 date.o,构建系统必须在您编译应用程序时使用当前构建日期和时间再次重建它。

      可能还有许多其他变体,但我认为上面的变体足够简单并且可以解决问题。

      【讨论】:

      • 感谢您的提示。对于 TASKING(基于 Eclipse,因此很可能也可以在那里工作),以下在 Windows 10 上工作:“rm -f ${ProjDirPath}\Debug\path_to_file\version.o”(不带引号)在 Properties > C /C++ 构建 > 设置 > 构建步骤 > 预构建步骤 > 命令。 “del”不起作用,我猜 Eclipse 只是在内部使用了类似 linux 的命令。
      • @MatthiasLuh 感谢您的反馈。我无权访问任何版本的 Windows,因此我无法自己检查。我原来的答案也表明要么是rm -f要么是del /q,所以我认为我不应该改变答案。另外,我认为 Eclipse 不使用任何命令:它会执行您“按原样”输入的内容。换句话说,运行 Eclipse 的 您的 环境支持rm,但不支持del。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      • 2020-08-23
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多