windows和linux平台C++工程 如何连接第三方依赖库

windows和linux平台C++工程 如何连接第三方依赖库,第1张

C++工程 如何连接第三方依赖库

本文以opencv为例说明分别在windows平台用VS2019以及linux平台下使用CMake如何连接项目的第三方依赖库

VS2019设置第三方依赖库

1.附加包含目录(这里写的绝对路径,建议相对路径)

注意:本工程的opencv的头文件路径是E:\Project_C++\yolo_dnn\yolo_dnn\lean\opencv4.5.5\include\opencv2,附加包含目录写成

E:\Project_C++\yolo_dnn\yolo_dnn\lean\opencv4.5.5\include,那么包含opencv头文件的时候需要写成#include ,如果附加包含目录写成E:\Project_C++\yolo_dnn\yolo_dnn\lean\opencv4.5.5\include\opencv2,那么就可以写成#include 。所以有人就将以上两种情况都写上,如下所示:

E:\Project_C++\yolo_dnn\yolo_dnn\lean\opencv4.5.5\include

E:\Project_C++\yolo_dnn\yolo_dnn\lean\opencv4.5.5\include\opencv2

2.附加库目录(这里写的绝对路径,建议相对路径)

3.附加依赖项

注意 Debug模式使用的是opencv_world455d.lib,Release模式使用的是opencv_world455.lib,与lib对应的dll文件放入工程目录下,有的dll必须放入.exe文件目录下,不知道为什么,待研究

linux下设置第三方依赖库

使用Ubuntu系统,使用CMakeList.txt构建工程,这里介绍三种方式:1.opencv安装到系统目录下,2.opencv 安装到指定目录下,3.将opencv编译成libopencv_world.so的形式(1和2的方式都是一堆.so文件,3是一个.so文件)

1.opencv安装到系统目录下

cmake_minimum_required(VERSION 2.8)

project(yolo_dnn)

set(CMAKE_CXX_STANDARD 11)

set(CMAKE_BUILD_TYPE Release)

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build)

find_package(OpenCV REQUIRED)

aux_source_directory(src/ DIR_SRCS)

ADD_EXECUTABLE(yolo_dnn ${DIR_SRCS})

target_link_libraries(yolo_dnn ${OpenCV_LIBS})

2.opencv安装到指定目录

cmake_minimum_required(VERSION 2.8)

project(yolo_dnn)

set(CMAKE_CXX_STANDARD 11)

set(CMAKE_BUILD_TYPE Release)

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build)

#我的opencv安装路径是/home/yyh/opencv4.5.5_build,而加入lib/cmake/opencv4/的目的指向OpenCVConfig.cmake文件的所在路径
set(OpenCV_DIR "/home/yyh/opencv4.5.5_build/lib/cmake/opencv4/")  

find_package(OpenCV REQUIRED)

aux_source_directory(src/ DIR_SRCS)

ADD_EXECUTABLE(yolo_dnn ${DIR_SRCS})

target_link_libraries(yolo_dnn ${OpenCV_LIBS})

3.将opencv编译成libopencv_world.so的形式,cmake直接指向路径,如同windows

cmake_minimum_required(VERSION 2.8)

project(yolo_dnn)

set(CMAKE_CXX_STANDARD 11)

set(CMAKE_BUILD_TYPE Release)

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build)

include_directories(${PROJECT_SOURCE_DIR}/lean/opencv4.5.5/include/opencv4) # 指向.h文件,同windows中的附加包含目录

link_directories(${PROJECT_SOURCE_DIR}/lean/opencv4.5.5/lib) #指向.so的文件路径,同windows中的附加库目录

# 这个和target_link_libraries(yolo_dnn libopencv_world.so)一样可行(有人说这个是连接静态库用的,还是不特别明白两者的区别),这个必须在ADD_EXECUTABLE上面,target_link_libraries必须在ADD_EXECUTABLE下面
# link_libraries(libopencv_world.so) 

aux_source_directory(src/ DIR_SRCS)

ADD_EXECUTABLE(yolo_dnn ${DIR_SRCS})

target_link_libraries(yolo_dnn libopencv_world.so) #指定使用.so文件的名称 同windows中的附加依赖项


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/872747.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存