我有以下情况:我有一个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目标时,我会看到像
重新运行cmake文件:Makefile早于: CAFFE / SRC / CAFFE / CMakeFiles / cuda_compile.dir /层/ cuda_compile_generated_cudnn_relu_layer.cu.o.depend
当GPU关闭时,一切正常 - 任何make命令都不会导致重新生成
答案 0 :(得分:1)
通过以下链接找到答案:
简介:一切都很正常。这是pan:~$ g++ example.cpp -Wall -o example.elf
pan:~$ ./example.elf 4
Complex ctor: 0, 0
Complex ctor: 0, 0
Complex ctor: 0, 0
Complex ctor: 0, 0
pan:~$
的正常行为。
首先使运行FindCUDA.cmake
文件将包含在CMake项目中,第二个make运行将重新编译而不重新生成.depend
个文件。
在第二次之后,一切都会好起来的,一个模块中的更改不会导致整个项目中的重新编译。