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

标签 c++ cmake

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

rm -rf build_folder
mkdir build_folder
cd build_folder
cmake ..

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

最佳答案

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

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

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

关于c++ - 在调用 cmake 之前删除构建文件夹中的所有内容是否合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26929749/

相关文章:

c++ - 如何删除冗余输出

c++ - 如何通过内存中的地址获取有关符号的更多信息

c++ - 无法使 std::array 成为 C++ 中的 constexpr

c++ - Cmake 包含目录

c++ - 具有对象数组的对象

c++ - ROS 中的 VISP - 无法显示相机提要

c++ - 需要一些帮助来创建一个 cmake 文件以使我的项目正常工作...从 cmake 转换

cmake 预构建命令从外部存储库复制文件

cmake - 在 CMake 配置时构建程序

c++ - CMake:构建库并将其链接到可执行文件导致 undefined reference 错误