Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在编译之前,我应该在什么时候删除目标文件?_C++_Build - Fatal编程技术网

C++ 在编译之前,我应该在什么时候删除目标文件?

C++ 在编译之前,我应该在什么时候删除目标文件?,c++,build,C++,Build,在编译脚本中,我通常看到在编译之前总是删除对象文件的调用。这会减慢构建过程吗?在决定重新编译目标文件时,检查目标文件是否过期的编译器真的有必要吗?1)是的,2)不是的,但不是编译器在注意这一点,而是构建系统(IDE或编写良好的生成文件)。1)是的,2)不是的,但不是编译器在注意这一点,它是构建系统(IDE或编写良好的makefile)。有时,如果将源文件还原为以前的版本,则.o将有一个更新的源日期,因此不会提供给编译器。如果您有理由恢复源文件,那么您几乎肯定希望重建对象。执行一个干净的构建可以确

在编译脚本中,我通常看到在编译之前总是删除对象文件的调用。这会减慢构建过程吗?在决定重新编译目标文件时,检查目标文件是否过期的编译器真的有必要吗?

1)是的,2)不是的,但不是编译器在注意这一点,而是构建系统(IDE或编写良好的生成文件)。

1)是的,2)不是的,但不是编译器在注意这一点,它是构建系统(IDE或编写良好的makefile)。

有时,如果将源文件还原为以前的版本,则.o将有一个更新的源日期,因此不会提供给编译器。如果您有理由恢复源文件,那么您几乎肯定希望重建对象。执行一个干净的构建可以确保您得到您认为您得到的东西。

有时,如果您将源文件还原为以前的版本,则.o将有一个更新的日期作为其源文件的日期,因此不会提供给编译器。如果您有理由恢复源文件,那么您几乎肯定希望重建对象。做一个干净的构建可以确保你得到你认为你得到的东西。

在某种程度上,删除现有的目标文件会首先破坏拥有独立翻译单元的目的。标准生成环境通常只应重建比相应源文件旧的对象文件。(不需要删除,只需覆盖即可。)

如果您有一个不错的版本控制系统,那么即使签出一个修改过的文件的旧版本,也会使磁盘上的实际文件具有当前的时间戳,但实际上,如果您担心某些内容可能不一致,您可以随时清理整个构建树并重新开始。但是,作为一种正常的代码编写方式,删除对象文件似乎非常浪费


当然,您应该为每一组构建选项保留一组对象文件(例如,debug vs release)。一些构建环境允许您拥有多个输出目录,而其他(如CMAGE)将只在自动更改全局生成设置的情况下自动重建所有内容,但这是值得注意的,尤其是如果您仅在构建过程的中间向编译器标志添加了一些定义,则

在某种程度上,删除现有的对象文件首先会破坏使用单独翻译单元的目的。标准生成环境通常只应重建比相应源文件旧的对象文件。(不需要删除,只需覆盖即可。)

如果您有一个不错的版本控制系统,那么即使签出一个修改过的文件的旧版本,也会使磁盘上的实际文件具有当前的时间戳,但实际上,如果您担心某些内容可能不一致,您可以随时清理整个构建树并重新开始。但是,作为一种正常的代码编写方式,删除对象文件似乎非常浪费

当然,您应该为每一组构建选项保留一组对象文件(例如,debug vs release)。一些构建环境允许您拥有多个输出目录,而其他(如CMAGE)将只在自动更改全局生成设置时自动重建所有内容,但这是值得注意的,尤其是如果您只在编译过程的中间添加了一些编译器标志。