一、NVIDIA驱动安装
网址:官方驱动 | NVIDIA
因为本文之后需要visual studio2022进行编译,所以在安装NVIDIA\CUDA\cudnn之前你先得安装visual studio2022
点击NVIDIA控制面板,NVIDIA Control Panel
查看产品家族
根据产品家族选择驱动,点击搜索
点击下载
下载之后双击安装,一直下一步就行了,不要随便改变安装路径
二、CUDA安装
网址:CUDA Toolkit Archive | NVIDIA Developer
根据系统信息找到适合自己的CUDA版本
安装的时候确保这个也勾上
win+r打开cmd输入【nvcc -V】查看,如下图表示安装成功!
三、 cudnn安装
网址:cuDNN Archive | NVIDIA Developer
需要注册英伟达的开发者账号才能下载。一定要注意,cuDNN的版本和CUDA的版本是需要对应的,不然不能用,我是12.3的,所以选择8.9.7版本
下载之后解压
把这些文件夹全部复制,粘贴到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3路径下,替换掉该路径下的同名文件,我的CUDA版本为12.3,所以路径的最后是\v12.3,你的版本不一样,这个就会不一样。
到此,NVIDIA\CUDA\cudnn安装完成。
如果你和我是同版本的NVIDIA\CUDA\cudnn,我这里有下载好的
链接:https://pan.baidu.com/s/186kNYlTzDlB0fj-M1XQ-rw
提取码:wstc
四、visual studio2022编译安装ceres2.2.0库
1、下载链接:
Eigen:Eigen
ceres-solver:GitHub - ceres-solver/ceres-solver at 2.2.0
gflags:https://github.com/gflags/gflags/tree/v2.2.2
glog:GitHub - google/glog at v0.6.0
suitesparse-metis-for-windows:Release Release of 1.3.1 · jlblancoc/suitesparse-metis-for-windows · GitHub
cmake:cmake官网
我这里有下载好的:
Ceres-solver、gflags、Eigen、glog、suitesparse、cmake资源-CSDN文库
2、cmake编译
首先安装cmake,安装路径自己选。
找个地方新建文件夹Ceres,之后的编译都在这个文件夹内进行,在该文件夹下面建立Build、Library、Cinclude、CLib、Cdill、source;接着在Build里面建立Eigen_build、Ceres_build、Gflags_build、Glog_build、Suitesparse_build,这些文件夹都是编译位置;在Library里面建立Eigen_lib、Ceres_lib、Gflags_lib、Glog_lib、Suitesparse_lib这些文件夹都是库文件生成位置,最后把源码都解压到source文件夹里。
2.1、gflags编译
打开cmake,找到gflags的源码位置和编译位置
点击configure,写上x64,点击Finish
configure结束之后
配置,蓝色标注的是修改好的
点击Generate,然后点击Open_Project ,打开visual studio2022,点击生成,找到批生成
把ALL_BUILD的Debug|x64和Release|x64以及INSTALL的Debug|x64和Release|x64给点上,最后点击生成,生成结束之后C:\Compiler\ceres\Library\Gflags_lib会有这些文件
2.2、glog编译
打开cmake,找到glog的源码位置和编译位置
点击configure,写上x64,点击Finish,configure结束之后
配置,蓝色标注的是修改好的
点击Generate,然后点击Open_Project ,打开visual studio2022,点击生成,找到批生成, 把ALL_BUILD的Debug|x64和Release|x64以及INSTALL的Debug|x64和Release|x64给点上,最后点击生成,生成结束之后C:\Compiler\ceres\Library\Glog_lib会有这些文件
2.3、Eigen编译
打开cmake,找到gflags的源码位置和编译位置
点击configure,写上x64,点击Finish,configure结束,这里修改比较容易
配置,蓝色标注的是修改好的
点击Generate,然后点击Open_Project ,打开visual studio2022,点击生成,找到批生成, 把ALL_BUILD的Debug|x64和Release|x64以及INSTALL的Debug|x64和Release|x64给点上,最后点击生成,生成结束之后C:\Compiler\ceres\Library\Eigen_lib会有这些文件
2.4、suitesparse编译
打开cmake,找到glog的源码位置和编译位置
点击configure,写上x64,点击Finish,configure结束
配置,蓝色标注的是修改好的
点击Generate,然后点击Open_Project ,打开visual studio2022,点击生成,找到批生成, 把ALL_BUILD的Debug|x64和Release|x64以及INSTALL的Debug|x64和Release|x64给点上,最后点击生成,这只是生成了suitesparse静态库。
接下来要生成动态库
配置,蓝色标注的是修改好的
点击Generate,然后点击Open_Project ,打开visual studio2022,点击生成,找到批生成, 把ALL_BUILD的Debug|x64和Release|x64以及INSTALL的Debug|x64和Release|x64给点上,最后点击生成,这只是生成了suitesparse动态库。 生成结束之后C:\Compiler\ceres\Library\suitesparse_lib会有这些文件
2.5、ceres编译
打开cmake,找到glog的源码位置和编译位置
在configure之前要通过Add Entry增加一些配置:
BLAS_LIBRARIES(FILEPATH):C:\Compiler\ceres\Library\suitesparse_lib\lib64\lapack_blas_windows\libblas.lib
LAPACK_LIBRARIES(FILEPATH):C:\Compiler\ceres\Library\suitesparse_lib\lib64\lapack_blas_windows\liblapack.lib
GLOG(BOOL):选中打勾
SUITESPARSE_CHECK_INCLUDE_DIRS(PATH):C:\Compiler\ceres\Library\suitesparse_lib\include
SUITESPARSE_CHECK_LIBRARY_DIRS(PATH):C:\Compiler\ceres\Library\suitesparse_lib\lib64
Eigen3_DIR(PATH):C:\Compiler\ceres\Library\Eigen_lib\share\eigen3\cmake
gflags_DIR(PATH):C:\Compiler\ceres\Library\Gflags_lib\lib\cmake\gflags
glog_DIR(PATH):C:\Compiler\ceres\Library\Glog_lib\lib\cmake\glog
点击configure,写上x64,点击Finish,configure结束
配置,蓝色标注的是修改好的
点击Generate,然后点击Open_Project ,打开visual studio2022,点击生成,找到批生成, 把ALL_BUILD的Debug|x64和Release|x64以及INSTALL的Debug|x64和Release|x64给点上,最后点击生成,生成结束之后C:\Compiler\ceres\Library\Ceres_lib会有这些文件
2.6、整合
把C:\Compiler\ceres\Library\Ceres_lib\include的ceres文件夹、C:\Compiler\ceres\Library\Eigen_lib\include\eigen3的Eigen、unsupported文件夹、C:\Compiler\ceres\Library\Gflags_lib\include的gflags文件夹、C:\Compiler\ceres\Library\Glog_lib\include的glog的文件夹、C:\Compiler\ceres\Library\suitesparse_lib\include的suitesparse的文件夹放到C:\Compiler\ceres\Cinclude文件夹里面
把C:\Compiler\ceres\Library\Ceres_lib\lib的以.lib结尾的文件、C:\Compiler\ceres\Library\Gflags_lib\lib的以.lib结尾的文件、C:\Compiler\ceres\Library\Glog_lib\lib的以.lib结尾的文件、C:\Compiler\ceres\Library\suitesparse_lib\lib64的以.lib结尾的文件和lapack_blas_windows文件夹放到C:\Compiler\ceres\CLib文件夹里面
把C:\Compiler\ceres\Library\Ceres_lib\bin的以.dll结尾的文件、C:\Compiler\ceres\Library\Gflags_lib\bin的以.dll结尾的文件、C:\Compiler\ceres\Library\Glog_lib\bin的以.dll结尾的文件、C:\Compiler\ceres\Library\suitesparse_lib\bin的以.dll结尾的文件以及C:\Compiler\ceres\Library\suitesparse_lib\lib64\lapack_blas_windows的以.dll结尾的文件放到C:\Compiler\ceres\Cdll文件夹里面
最后把C:\Compiler\ceres\Cdll加入到你的电脑的环境变量,电脑重启。
2.6、测试
新建一个visual studio2022项目,把C:\Compiler\ceres\Cinclude写入包含目录里,C:\Compiler\ceres\CLib库目录里,附加依赖项ceres.lib、glog.lib、gflags_nothreads.lib(Release版本),glogd.lib、ceres-debug.lib、gflags_nothreads_debug.lib(Debug版本),预处理器定义增加GLOG_NO_ABBREVIATED_SEVERITIES、_CRT_NONSTDC_NO_DEPRECATE这两个,常规里面的C++语言标准、C语言标准都改成17版本。
借用C:\Compiler\ceres\source\ceres-solver-2.2.0\examples里面的helloworld.cc进行运行
结果
已经编译好的文件: visualstudio2022已经编译好的ceres库资源-CSDN文库