什么时候我应该在编译前删除目标文件
When should I delete object files before compiling?
在编译脚本中,我通常看到总是在编译前删除目标文件的调用。这会减慢构建过程吗?当决定重新编译目标文件时,是否真的有必要使用编译器来检查它们是否过期?
有时,如果您将源文件还原为以前的版本,.o将具有比其源文件更新的日期,因此不会将其提供给编译器。如果您有理由还原源文件,您几乎肯定希望重新构建对象。做一个干净的构建确保你得到你认为你得到的。
在某种程度上,删除现有的目标文件首先违背了拥有独立翻译单元的目的。您的标准构建环境通常应该只重新构建那些比相应的源文件更老的目标文件。(你不需要删除,你可以覆盖)
如果您有一个不错的版本控制系统,那么即使签出修改文件的旧版本,也会使磁盘上的实际文件具有当前的时间戳,但是,如果您担心某些内容可能不一致,您总是可以清理整个构建树并重新开始。但是在正常的代码编写中,删除目标文件会显得非常浪费。
你当然应该为每一组构建选项保留一组目标文件(例如调试和发布)。一些构建环境允许你有多个输出目录,其他的(如cmake)会自动重建一切,如果你改变全局构建设置,但这是需要注意的,特别是如果你只是添加一些#定义编译器标志在构建过程的中间。
1)是,2)不是,但它不是编译器注意到这一点,它是构建系统(IDE或编写良好的makefile)
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 删除指向指针的指针是运行时错误吗
- 当应该删除其目标时,为什么此智能指针给出正确的结果
- 二叉搜索 删除目标节点的树有两个子节点
- 正在删除有两个孩子的目标
- make add_custom_command失败,目标被删除
- 什么时候我应该在编译前删除目标文件
- 内存管理 - 目标 C++ 运算符删除