在调用cmake之前删除构建文件夹中的所有内容是否合理?

在调用cmake之前删除构建文件夹中的所有内容是否合理?

问题描述:

我现在正在使用cmake在多个平台上编译和构建C++项目。每次调用cmake脚本时,建筑文件夹中的所有内容都将被删除。例如,我用下面的shell命令来说明的方式cmake的是如何调用:在调用cmake之前删除构建文件夹中的所有内容是否合理?

rm -rf build_folder 
mkdir build_folder 
cd build_folder 
cmake .. 

通过这样做,我们相信,该项目产生的库或二进制相对于源代码的更新。但是,每次camke会调用编译器从头开始构建项目时,可能需要一段时间。原因在于我们担心如果我们不删除building文件夹中的所有内容,cmake可能会保留之前版本的一些中间结果。所以我的问题是:我们的担心是否合理,如果在前一个Building文件夹中调用cmake ..而不删除文件夹中的任何内容,我们可以采取哪种危险?

使用构建系统的一个主要观点是不必每次都重建所有内容。正确的编译系统可以正确地跟踪哪些文件已经更改,因此需要执行哪些命令才能进行正确的最小重建。

如果这不适合你,你已经搞砸了你的构建系统。

如果您担心为不同的平台进行构建,并且构建系统无法识别差异,那只是构建系统混乱的一种方式。具体而言,问题在于您正在按顺序在同一个目录中构建不同的变体。至少这是我从你的描述中得到的。这很愚蠢,不要这样做。为每个平台使用不同的生成文件夹,使用正确的配置在每个文件夹中调用一次cmake,然后保留它。

+0

我会争辩说,生产建设它不能伤害,应该事先清理生成文件夹。它不应该伤害编译时间,因为无论如何你都会从头开始制作生产版本。 – sjdowling 2014-11-14 14:06:04

+0

@sjdowling真的,对于发布包装,你通常希望强制清理构建。 – 2014-11-14 14:33:05