From c1325704cfcd050259ad752a899b0c425e2a7b00 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E6=99=93=E7=A3=8A?= <932082286@qq.com>
Date: Wed, 4 Sep 2024 21:48:41 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0PP-ShiTu=E7=9A=84C++=E4=BB=A3?=
=?UTF-8?q?=E7=A0=81=E5=9C=A8windows=E7=8E=AF=E5=A2=83=E4=B8=8B=E7=9A=84?=
=?UTF-8?q?=E7=BC=96=E8=AF=91=E6=AD=A5=E9=AA=A4=20(#3225)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/zh_CN/deployment/PP-ShiTu/cpp.md | 78 +++++++++++++++++++++++++++
1 file changed, 78 insertions(+)
diff --git a/docs/zh_CN/deployment/PP-ShiTu/cpp.md b/docs/zh_CN/deployment/PP-ShiTu/cpp.md
index 6a802a610..9320a080b 100644
--- a/docs/zh_CN/deployment/PP-ShiTu/cpp.md
+++ b/docs/zh_CN/deployment/PP-ShiTu/cpp.md
@@ -14,6 +14,7 @@
- [2.代码编译](#2)
- [3.运行demo](#3)
- [4.使用自己模型](#4)
+- [5.Windows环境源码编译](#5)
@@ -378,3 +379,80 @@ cd ..
使用自己训练的模型,可以参考[模型导出](../export_model.md),导出`inference model`,用于模型预测。
同时注意修改`yaml`文件中具体参数。
+
+
+
+## 5. Windows环境源码编译
+
+- 5.1 下载安装CMake
+- 5.2 下载源码 (需要使用VS 2019以上版本进行编译)
+- 5.3 下载[Widows推理库](https://www.paddlepaddle.org.cn/inference/master/guides/install/download_lib.html#windows)
+ 注意:推理库需要根据实际情况下载对应的版本
+- 5.4 下载或编译OpenCV
+- 5.5 下载或编译faiss
+- 5.6 下载或编译OpenBLAS(若启用)
+- 5.7 下载安装MKL(若启用) 配置环境变量
+- 5.8 下载安装cuda(若启用) 配置环境变量
+- 5.9 使用CMake生成解决方案
+ ```
+ 打开CMake-gui
+
+ 源码路径选择 xx../PaddleClas/deploy/cpp_shitu
+
+ 解决方案生成位置填写 xx../PaddleClas/deploy/cpp_shitu/build
+
+ OPENCV_DIR填写OpenCV的lib文件所在路径,如 xx../opencv/build/x64/vc15/lib
+
+ OpenCV_DIR填写OpenCV的cmake文件所在路径,如 xx../opencv/build
+
+ faiss_DIR填写faiss的cmake文件所在路径,如 xx../faiss/share/faiss
+
+ 根据自己实际情况填写 CUDA_LIB,CUDNN_LIB,FAISS_WITH_MKL,WITH_GPU,WITH_MKL
+ ```
+
+ 点击-Configure,没有错误之后, 点击Generate, 点击Open Project。
+
+ 经过上述步骤,源码已经在VS中打开,解决方案文件均已生成,在 xx../PaddleClas/deploy/cpp_shitu/build 路径。
+ 如果生成异常,可以清空该路径重新执行上述步骤。
+
+- 5.10 编译源码
+
+ 在VS中,打开pp_shitu项目,编辑CMakeLists.txt文件。
+
+```
+ option(WITH_MKL "Compile demo with MKL/OpenBlas support, default use MKL." ON)#根据实际情况调整
+ option(WITH_GPU "Compile demo with GPU/CPU, default use CPU." OFF)#根据实际情况调整
+ option(WITH_STATIC_LIB "Compile demo with static/shared library, default use static." ON)#根据实际情况调整
+ option(WITH_TENSORRT "Compile demo with TensorRT." OFF)#根据实际情况调整
+ option(FAISS_WITH_MKL "Faiss Compile demo with MKL." OFF)#根据实际情况调整
+
+ SET(PADDLE_LIB "填写推理库所在的路径,5.3解压路径")
+ SET(OPENCV_DIR "" CACHE PATH "Location of libraries")
+ SET(CUDA_LIB "" CACHE PATH "Location of libraries") #填写CUDA_LIB所在的路径(若需要)
+ SET(CUDNN_LIB "" CACHE PATH "Location of libraries") #填写CUDNN_LIB所在的路径(若需要)
+ SET(TENSORRT_DIR "" CACHE PATH "Compile demo with TensorRT")#根据实际情况调整
+ SET(FAISS_DIR "xx../faiss")#填写faiss的lib所在路径(编译后或下载的预编译解压路径)
+ ...
+```
+
+ 如果使用了OpenBLAS
+```
+ 22行 SET(BLAS_NAME "openblas") 修改成libopenblas.lib的实际位置,如 SET(BLAS_NAME "${PADDLE_LIB}/third_party/install/openblas/lib/libopenblas.lib")
+ ...
+ 239行 target_link_libraries(${DEMO_NAME} ${BLAS_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}) 去掉文件后缀 target_link_libraries(${DEMO_NAME} ${BLAS_NAME})
+```
+
+ 将项目设置成Release模式, 右键pp_shitu->生成项目,即可。
+
+ 如果在编译过程中遇到报错,主要是几种情况:
+
+ ```
+ -CMakeLists.txt 里面的文件名与实际情况不一致,或者文件位置不一致,可以参考5.10中提供的两个例子,根据实际情况调整 CMakeLists.txt
+
+ -某些函数不能编译,确认使用的第三方库是否是Release模式,个别函数不能识别,确认头文件与Lib文件版本是否一致
+
+ -程序无法正常启动执行,主要是因为缺少第三方的动态库文件,可以根据对应的提示,将相应的文件拷贝到Release目录下。
+ ```
+
+
+