判断OpenCV是否为共享库,Windows基于CMake编译Caffe需要opencv共享库
判断OpenCV是否为共享库,Windows基于CMake编译Caffe需要opencv共享库
TLDR
- 只考虑windows下opencv预编译包的情况。 
- 对于opencv2.4.x系列,cmake时指定 - -DOpenCV_STATIC=OFF则为使用动态共享库,不指定或者指定- -DOpenCV_STATIC=ON则为使用静态库。
- 对于opencv3系列,我用的不多。opencv310看起来是只有动态库。 
- find(OpenCV)后,打印- ${OpenCV_LIB_PATH}和- ${OpenCV_SHARED}来查看OpenCV库目录、是否为共享库。
静态库:使用的是staticlib目录
OpenCV_LIB_PATH: D:/lib/opencv_249/build/x64/vc12/staticlib
OpenCV_SHARED: OFF
动态库:使用的是lib目录
OpenCV_LIB_PATH: D:/lib/opencv_249/build/x64/vc12/lib
OpenCV_SHARED: ON
完整的找包写法:
find_package(OpenCV QUIET COMPONENTS core highgui imgproc imgcodecs)
if(NOT OpenCV_FOUND) # if not OpenCV 3.x, then imgcodecs are not found
    find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc)
endif()
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
message(STATUS "    OpenCV_SHARED: ${OpenCV_SHARED}") # important
举例:windows上基于CMake编译Caffe,设定OpenCV
1)下载
caffe windows分支源码。https://github.com/BVLC/caffe ,选择windows分支下载。或者git操作。
caffe的预编译的依赖包。我放到了D:/lib/caffe_windows_deps/download/libraries_v120_x64_py27_1.1.0.tar.bz2。等下调用cmake的时候会自动解压到D:/lib/caffe_windows_deps/libraries_v120_x64_py27_1.1.0。
2)第一种编译方式:使用官方依赖包编译caffe
caffe-windows根目录下编写compile.bat脚本并执行:
set BUILD_DIR=build-vs2013
if exist %BUILD_DIR% rd /s /q %BUILD_DIR%
md %BUILD_DIR%
cd %BUILD_DIR%
set DEP_ROOT=F:/zhangzhuo/lib/caffe_windows_deps
cmake -G "Visual Studio 12 2013 Win64" ^
    -DCAFFE_DEPENDENCIES_ROOT_DIR=%DEP_ROOT% ^
    -DCPU_ONLY=ON ^
    -DBLAS=Open ^
	..
cd ..
3)第二种编译方式:手工指定opencv路径、是否为动态共享库,编译caffe
opencv249windows pack同时提供动态共享库和静态库,默认静态库。编译caffe需要共享库,需要手动开启:OpenCV_STATIC=OFF。
set BUILD_DIR=build-vs2013-opencv249
if exist %BUILD_DIR% rd /s /q %BUILD_DIR%
md %BUILD_DIR%
cd %BUILD_DIR%
set DEP_ROOT=D:/lib/caffe_windows_deps
set OpenCV_DIR=D:/lib/opencv_249/build
cmake -G "Visual Studio 12 2013 Win64" ^
    -DCAFFE_DEPENDENCIES_ROOT_DIR=%DEP_ROOT% ^
    -DCPU_ONLY=ON ^
    -DBLAS=Open ^
    -DOpenCV_DIR=%OpenCV_DIR% ^
    -DOpenCV_STATIC=OFF ^
	..
cd ..
然后开visual studio,进入Release模式编译
opencv310windows pack只提供了动态库,所以不用指定-DOpenCV_STATIC=OFF:
set BUILD_DIR=build-vs2013-opencv310
if exist %BUILD_DIR% rd /s /q %BUILD_DIR%
md %BUILD_DIR%
cd %BUILD_DIR%
set DEP_ROOT=F:/zhangzhuo/lib/caffe_windows_deps
set OpenCV_DIR=F:/zhangzhuo/lib/opencv_310/build
cmake -G "Visual Studio 12 2013 Win64" ^
    -DCAFFE_DEPENDENCIES_ROOT_DIR=%DEP_ROOT% ^
    -DCPU_ONLY=ON ^
    -DBLAS=Open ^
    -DOpenCV_DIR=%OpenCV_DIR% ^
	..
cd ..
判断OpenCV是否为共享库,Windows基于CMake编译Caffe需要opencv共享库的更多相关文章
- Windows下CMake编译安装OpenCV
		Windows下CMake编译安装OpenCV 这是一个面向新手的在windows上运进opencv, helloword的教程. 在这里我们使用vs2019来编译opencv, 并运行一个hello ... 
- Unity跨平台C/CPP动态库编译---可靠UDP网络库kcp基于CMake的各平台构建实践
		1.为什么需要动态库 a)提供原生代码(native code)的支持,也叫原生插件,但是我实践的是c/cpp跨平台动态库,这里不具体涉及安卓平台java库和ios平台的objectc库构建. b)某 ... 
- 基于Anaconda编译caffe+pycaffe+matcaffe in Ubuntu[不用sudo权限]
		目录 caffe 编译 环境 github下载caffe源码 依赖 修改源码的编译配置 报错 测试使用 pycaffe caffe matcaffe caffe 编译 环境 Ubuntu16.04 C ... 
- 基于cmake编译安装MySQL-5.5
		cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以 ... 
- 基于chyh1990/caffe-compact在windows vs2013上编译caffe步骤
		1. 从https://github.com/chyh1990/caffe-compact下载caffe-compact代码: 2. 通过CMake(cmake-gui)生成vs2 ... 
- geos 3.6.3库windows版本 已编译完成的32位版本和64位版本
		网上教编译方法的很多,直接分享编译完成的很少. 我就把编译完成的分享出来吧. geos-3.6.3.tar.bz2 (Changes) 版本的 https://trac.osgeo.org/geos ... 
- Windows上快速编译caffe CPU版本
		windows上快速安装配置Caffe的 cpu_only环境. 一:安装环境: 1.windows10: 2.Visual Studio2013: 3.Caffe版本:http://github.c ... 
- 基于cmake编译glew
		cmake已经成为了C/C++开源项目的主流构建工具.glew也提供了cmake的脚本,但用cmake编译glew容易采坑:glew的github上的代码,无论是master分支还是glew-2.1. ... 
- windows 10 上源码编译OpenCV并支持CUDA | compile opencv with CUDA support on windows 10
		本文首发于个人博客https://kezunlin.me/post/6580691f/,欢迎阅读! compile opencv with CUDA support on windows 10 Ser ... 
随机推荐
- 【iCore4 双核心板_FPGA】实验二十:NIOS II之UART串口通信实验
			实验指导书及源代码下载地址: 链接:https://pan.baidu.com/s/1g_tWYYJxh4EgiGvlfkVu1Q 提取码:dwwa 复制这段内容后打开百度网盘手机App,操作更方便哦 ... 
- 审阅模式中word保存不了
			word保存不了 觉得有用的话,欢迎一起讨论相互学习~Follow Me 昨天写论文出现一个怪事,发现自己word内容按ctrl+S 进行保存时可以的,但是当按X进行关闭时,出现 关闭不了,问我是否需 ... 
- OpenStack(二)——使用Kolla部署OpenStack-allinone云平台
			(1).Kolla概述 Kolla是OpenStack下用于自动化部署的一个项目,它基于docker和ansible来实现,其中docker主要负责镜像制作和容器管理,ansible主要负责环境的部署 ... 
- blade-boot操作之Idea使用Mave和Dockerfile文件推送到harbor仓库
			mvn clean package docker:build 错误提示: Failed to execute goal com.spotify:docker-maven-plugin:1.1.0:bu ... 
- jQuery prop方法替代attr方法
			jquery attr()方法获取标签的 checked 会有问题,所以用了 prop() 方法. 
- fail2ban的功能和特性(实测)
			fail2ban的功能和特性 https://fedoraproject.org/wiki/Fail2ban_with_FirewallD 1.支持大量服务.如sshd,apache,qmail,pr ... 
- SPI   ServiceLoader源码分析
			public class ddd { public static void main(String[] args) { ServiceLoader1<Hello> sl = Service ... 
- pom中parent和dependency区别以及dependencyManagement区别
			真的很详细 很感动 1.在同一个pom文件下,如果<dependencies>和<dependencyManagement>中都对该jar做了依赖,以<dependenc ... 
- OpenLayers加载高德地图离线瓦片地图
			本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer加载谷歌地球离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/openla ... 
- Python爬虫:现学现用xpath爬取豆瓣音乐
			爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与BeautifulSoup,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方式的对比. 这样一比较我我选择了Lxml(xpa ... 
