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

fee*_*ree 1 c++ cmake

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

rm -rf build_folder
mkdir build_folder
cd build_folder
cmake ..
Run Code Online (Sandbox Code Playgroud)

通过这样做,我们确保项目生成的库或二进制文件在源代码方面得到了更新。但是,每次camke都会调用编译器从头开始构建项目,这可能需要时间。原因在于我们担心如果我们不删除构建文件夹中的所有内容,cmake 可能会保留之前构建的一些中间结果。所以我的问题是:我们的担忧是否合理,如果只调用cmake ..之前的构建文件夹而不删除文件夹中的任何内容,我们会有什么样的危险?

Seb*_*edl 5

使用构建系统的一个要点是不必每次都重新构建所有内容。正确的构建系统会正确跟踪哪些文件已更改,因此需要哪些命令来进行正确的、最小的重建。

如果这对您不起作用,那么您就搞砸了构建系统。

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