【问题标题】:Do I need to do `make clean` if i press Ctrl + C如果我按 Ctrl + C,我是否需要做`make clean`
【发布时间】:2021-03-17 00:38:35
【问题描述】:

我正在编译一个非常大的代码库。如果我在make 进程的中间按Ctrl+C,我是否需要在继续make 进程之前运行make clean。如果主机内存不足而我不得不硬关机怎么办?我进行了很多搜索,但关于何时应该做make clean 的建议很少,而且都不太清楚。

【问题讨论】:

    标签: makefile cmake compilation gnu-make qmake


    【解决方案1】:

    我进行了很多搜索,但关于何时应该使用make clean 的建议很少,而且都不太清楚。

    不可能有任何通用的指导,因为make clean 的效果取决于所涉及的makefile。甚至“干净”目标的存在也只是一种约定。

    不过,一般来说,make clean 通常有两个主要目的:

    1. 摆脱构建文件以释放空间。
    2. 摆脱构建文件以克服 makefile 的缺点,这些缺点会阻止 make 识别何时需要重新构建某些目标。

    如果您的 makefile 准确且完整地代表了您项目的所有构建依赖项,则后者无关紧要,但是您的项目越大,就越难以对构建规则的完整性充满信心。

    如果我在制作过程中按 Ctrl+C,在继续制作过程之前是否需要运行 make clean。如果主机内存不足而我不得不硬关机怎么办?

    可能不会。风险在于构建被中断,导致部分写入或损坏的新目标留在原地。这不太可能,而且风险不会随着项目的规模而扩大。但是,如果您需要绝对确定一个好的构建,那么最安全的做法是先清理并仅在构建完成时才接受该构建。

    【讨论】:

    • 仅供参考:当您使用^C 时,make 将删除您正在处理的规则的目标,因为它可能已经部分构建(除非您声明它.PRECIOUS)。如果您进行硬关机(取决于这到底意味着什么),那么显然它无法做到这一点,并且您可能有一个部分构建的目标。在这种情况下,后续构建很可能会失败,然后您可以清理。剩余文件可能有效但已损坏的可能性极小,这意味着错误将更难诊断。这取决于你,真的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多