我正在使用CMake构建我的项目。此项目使用多个外部库,其中一个没有正确指定其依赖项。这会导致我的构建在运行并行make作业时失败。我想知道cmake和/或make中是否有一个特性可以串行地运行某段代码,并并行运行其他所有代码。
更具体地说,我使用的是FindCUDA.cmake模块,其中使用的是cuda_add_executable & cuda_add_library。我非常确信,在构建CUDA库时,FindCUDA模块没有列出它的依赖项,这会导致在向磁盘读取和写入中间对象文件时产生竞争条件。是否有一种方法可以简单地在并行运行我的其余构建时串行地运行cuda_add_library宏?
发布于 2022-11-16 08:42:13
发布于 2022-11-16 08:58:53
据我所知,您不能影响每个目标的构建并行性。但你可以解决这个问题。
您可以首先构建需要按顺序构建的目标(或多次调用的多个目标)。
cmake --build . --target seq_target -j 1
然后您可以构建整个项目,这样剩下的所有东西都可以并行构建。已经构建的内容没有再次生成,因此不会发生错误:
cmake --build . -j 8
https://stackoverflow.com/questions/35469243
复制相似问题