1. 准备源码
git clone --recursive https://github.com:PaddlePaddle/FastDeploy
2.使用ninja编译
cmake -GNinja -Bbuild_ninja -DBUILD_EXAMPLES=ON ^
-DENABLE_ORT_BACKEND=ON ^ # 用onnxruntime推理
-DENABLE_VISION=ON ^ # 开启图像识别
-DCMAKE_BUILD_TYPE=Release
cmake --build build_ninja --config Release
其他参数可以修改推理引擎并增加支持ocr
-DENABLE_PADDLE_BACKEND=ON # 用paddlelite推理
-DENABLE_OPENVINO_BACKEND=ON # 用openvino推理
-DENABLE_TEXT=ON # 增加text识别
2.1. 编译报错
- 编译examples时提示以下gflag链接错误
gflags_static.lib(gflags.cc.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”(infer.cc.obj 中)
gflags_static.lib(gflags_reporting.cc.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”(infer.cc.obj 中)
gflags_static.lib(gflags_completions.cc.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”(infer.cc.obj 中)
解决办法:修改gflags的CMakeLists.txt文件,直接使用字符串替换runtime
message("debugflag: ${CMAKE_CXX_FLAGS_DEBUG}")
string(REPLACE "/MTd" "/MDd" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
message("debugflag: ${CMAKE_CXX_FLAGS_DEBUG}")
message("releaseflag: ${CMAKE_CXX_FLAGS_RELEASE}")
string(REPLACE "/MT" "/MD" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
message("releaseflag: ${CMAKE_CXX_FLAGS_RELEASE} ${target_name}")
然后删除原来生成的中间文件并重新编译
rd /s/q build_ninja\third_libs\gflags\src\extern_gflags-build
cmake -GNinja -Bbuild_ninja\third_libs\gflags\src\extern_gflags-build -S build_ninja\third_libs\gflags\src\extern_gflags -DCMAKE_INSTALL_PREFIX=%cd%\build_ninja\third_libs\install\gflags\ -DCMAKE_BUILD_TYPE=Release
cmake --build build_ninja\third_libs\gflags\src\extern_gflags-build --config Release
cmake --install build_ninja\third_libs\gflags\src\extern_gflags-build --config Release
这两种方法也可以更改但是更改后往往会引出其他问题
方法一:
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
方法二:
set_property(TARGET gflags PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
3 使用vcxproj编译
cmake -Bbuild_vs -G "Visual Studio 16 2019" -A x64 ^
-DENABLE_ORT_BACKEND=ON ^
-DENABLE_PADDLE_BACKEND=ON ^
-DENABLE_OPENVINO_BACKEND=ON ^
-DENABLE_VISION=ON ^
-DENABLE_TEXT=ON ^
-DBUILD_EXAMPLES=ON ^
-DCMAKE_INSTALL_PREFIX="%cd%\build_vs\install"
cmake --build build_vs
cmake --install build_vs
直接vs编译没怎么报错就是项目依赖关系有问题,可以单独编译需要的targets
cmake --build build_vs --target vision_headpose_fsanet_infer