我现在正在使用 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/