新电脑安装的WIN11系统,因为CUDA只有11和12目前能装到WIN11上,所以就装了一个CUDA 11.7。但是编译PBRT失败,所以无奈之下又装了CUDA 12。
但是因为我有的代码需要CUDA 11里的函数,这些函数在CUDA12里被彻底删除了,但是接下来我的代码中,CMakeLists.txt 无论怎么设置,结果都只能选择CUDA 12的nvcc.exe。
一方面是网上实在没有什么资料,尝试了一些相关的设置,比如下面的设置都不行:
#set(CMAKE_INSTALL_PREFIX "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin")
#SET(CMAKE_CUDA_COMPILER "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin/nvcc.exe")
#SET(CUDA_FLAGS "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin/nvcc.exe")
project(FeimosVolumeRender LANGUAGES CXX CUDA)
#SET(CUDA_FLAGS "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin/nvcc.exe")
#set(CUDA_NVCC_FLAGS "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin/nvcc.exe")
系统路径也全改了,还是不行。
虽然我知道卸载CUDA12一定可以,但是我实在不想装了又卸,很麻烦的。
无奈之下,重装了一下CUDA 11,我本以为是12压制住了11,但是又重装了11以后仍然不行。
一气之下,把CUDA 12的路径改了,让编译器暂时搜索不到:
此时CMake报错:
我服了大哥,cmake12没有你选cuda11是能死啊?
后来我在VS里看到用到了CUDA 12.1.targets,我寻思着把这个路径下的这些东西先给删了:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\BuildCustomizations
删掉这三个文件以后,就可以配置为使用CUDA11编译器了。等Cmake生成好以后,再把这删掉的这三个文件恢复一下就好了。