我有以下情况:我有一个 CMake 文件,它应该编译几个二进制目标。 而且我的项目中也有CUDA
find_package(CUDA REQUIRED)
include_directories(${CUDA_INCLUDE_DIRS})
add_libraries_to_linker
当我运行我的 cmake
时,一切都很好。
第一个 make target a
命令也运行顺利,但第二个 make
命令检测到 cuda 生成的文件早于 Makefile 并重新生成导致项目重建的 cmake。
如何禁用 cmake 再生?
我错过了什么吗?
编辑: 我认为应该编辑我的问题。
我有一个 Caffe 框架,从使用它的源代码和二进制文件构建。
当我启用 GPU 时 - 由于编译 make target a
,Cuda 生成它的文件,所以当我运行另一个 make target 时,我看到类似的东西
Re-run cmake file: Makefile older than: Caffe/src/caffe/CMakeFiles/cuda_compile.dir/layers/cuda_compile_generated_cudnn_relu_layer.cu.o.depend
当 GPU 关闭时一切正常 - 任何 make 命令都不会导致重新生成
最佳答案
答案已在以下链接中找到:
简介:一切正常。这是 FindCUDA.cmake
的正常行为。
在第一次 make run 之后,.depend
文件将被包含到 CMake 项目中,第二次 make run 将重新编译而不重新生成 .depend
文件。
第二次make后一切正常,一个模块的改动不会导致整个工程重新编译。
关于c++ - 由于 cuda 生成的文件,Cmake 重新运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42761301/