判断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 ...
随机推荐
- zxing解析生成一维码二维码
@web界面实现扫一扫 二维码工具类 package util; import java.awt.BasicStroke; import java.awt.Graphics; import java. ...
- RestHighLevelClient查询es
本篇分享的是es官网推荐的es客户端组件RestHighLevelClient的使用,其封装了操作es的crud方法,底层原理就是模拟各种es需要的请求,如put,delete,get等方式:本篇主要 ...
- Android 问题解决 HorizontalScrollView显示不全(转)
原链接:https://www.jianshu.com/p/003adbcaff9d Android 问题解决 HorizontalScrollView显示不全 <HorizontalScrol ...
- python入门和杂识
1需要理解的一些概念 1.C语言编译完就是机器码,机器码可以直接在处理器上执行. 2.CPU可以直接读取机器码. 3.Python是用C写的. 4.Python解释器会把代码内容读到内存里,通过Pyt ...
- 研发的困境----DEVOPS
1.研发的困境 互联网的环境 互联网这个环境比较特别,包括现在不只是互联网,就算是被互联网赋能的这些“互联网+”的企业也在改变,用户在发生变化,用户构成的群体在发生变化,群体造成场景的变化,场景营造新 ...
- Fineui 根据datatable结构动态创建grid列,帮助类。动态绑定grid。
public class FineuiHelper { /// <summary> /// 动态创建Grid结构,在 Page_Init事件里执行( ...
- Go基础编程实践(七)—— 并发
同时运行多个函数 观察常规代码和并发代码的输出顺序. // 常规代码,顺序执行,依次输出 package main import ( "fmt" "time" ...
- 【实战经验】--Xilinx--Chipscope使用
1)在工程右键点击New Source 新建Chioscope,在File name 填写名称: 2)新建完成后,工程里会出现你建立的chipscope文件(如下图chip_ddr3.cdc)双击打开 ...
- Python 基础 编码
Python 基础 编码 咱们的电脑,存储和发送文件,发送的是什么?电脑里面是不是有成千上万个二极管,亮的代表是1,不亮的代表是0,这样实际上电脑的存储和发送是不是都是010101啊 我们发送的内容都 ...
- cocos creator图片渲染问题!
问题:游戏项目需要添加一个开场剧情(); 第一时间使用了cc.component.scheduleOnce (), 里面的回调函数为 cc.loader.loadRes(). 进入游戏时,渲染主场景后 ...