【问题标题】:what is the difference between 'make after make clean' and just 'make'?'make after make clean' 和 just 'make' 有什么区别?
【发布时间】:2014-07-31 13:47:55
【问题描述】:

目录中有 C 文件,我有一个 makefile。 我通常使用makefile来编译。 我一直在徘徊'make clean'的角色 'make clean' 只是删除文件。 虽然我没有使用'make clean',但 当出现问题时,会显示错误和警告。 我无法理解为什么每次更改源文件时都需要使用“make clean”。

【问题讨论】:

  • 这完全取决于makefile的内容。如果依赖项设置不正确,或者在更新其先决条件后其他内容触及目标文件,make 可能不知道需要重建目标。
  • 在 makefile 中有完美的依赖图是没有必要的。但是世界并不完美,许多依赖项可能会被省略(意外或故意 - 例如,不跟踪系统标头以减少浪费时间 - 无论如何,此标头很少更新)。干净的构建确保一切都是用最新版本的可靠文件构建的。

标签: makefile


【解决方案1】:

ma​​ke 是一个实用程序,用于自动确定需要重新编译大型程序的哪些部分,并发出重新编译它们的命令。

要准备使用 make,您必须编写一个名为 makefile 的文件,该文件描述程序中文件之间的关系,并说明更新每个文件的命令。

一旦存在合适的makefile,每次更改一些源文件,这个简单的shell命令:

make 

足以执行所有必要的重新编译。 make 程序使用 makefile 数据库和文件的最后修改时间来决定哪些文件需要更新。

我们通常使用make clean 作为一种通用的方式来告诉清理代码。即;从源代码中删除所有编译的目标文件。您可以随意命名。

【讨论】:

    【解决方案2】:

    这只是惯例。按照惯例,clean 会让您回到 all 您拥有的是“源”文件的状态。换句话说,它摆脱了可以从其他东西(对象、可执行文件、列表等)构建的所有内容。

    所以make clean ; make 预计会从头开始构建一切。而且,事实上,你经常会发现这样的规则:

    rebuild: clean all
    

    它将为您完成这两个步骤。

    您应该从不必须执行clean,除非您想(例如)将源文件复制到某处。如果您在编辑文件后必须这样做,那么您的Makefile 设置不正确。

    而且,如果您make 遇到错误,如果您随后make 没有修复上述错误,您应该会遇到完全相同的错误。

    【讨论】:

      猜你喜欢
      • 2019-01-21
      • 2021-11-04
      • 2010-10-20
      • 2010-11-14
      • 1970-01-01
      • 2014-06-07
      • 2013-12-02
      • 1970-01-01
      • 2017-10-22
      相关资源
      最近更新 更多