cmake opencv,dlib 编译静态库 1
无论windows,linux
所有的库 ,dlib,opencv 通过cmake-gui 设置好静态库, 动态库,和其他各个选项
Tips:
cmake 优先级用cmake-gui,因为命令太多,容易敲错!!!!!
cmake 默认是制作动态库.so,
若需要制作静态库
1.BUILD_SHARED_LIBS 设置为OFF
cmake-gui 选择:
BUILD
=> BUILD_SHARED_LIBS 默认是勾选就是动态库(.dll/.so);不勾选就是静态库 (.lib/ .a),
还可以选择指令集,SSE2 ,SSE3 SSE4.1 SSE4.2 avx ,avx2 AVX512 ,NEON等
命令:
cmake -DBUILD_SHARED_LIBS=OFF ..
这里唠叨下,你生成的静态库,可以被静态库包装, 给EXE使用。
1.但是一定要确保都是静态库,
2.而且 【运行环境】也都是一样的, MT ,MD,区别是链接系统的库不一样。
静态库 可以选择MD,MT 其中的一种来链接系统库,但必须要统一!!!
需要注意的是构建 静态库 其中除了又很多IPP,JPEG,PNG, FFMPEG,等等等等,还有很多系统的依赖,
windows:
..\..\lib\Release\opencv_ts343.lib
..\..\lib\Release\opencv_world343.lib
..\..\3rdparty\lib\Release\ippiw.lib
..\..\3rdparty\ippicv\ippicv_win\lib\intel64\ippicvmt.lib
..\..\3rdparty\lib\Release\libprotobuf.lib
..\..\3rdparty\lib\Release\libjpeg-turbo.lib
..\..\3rdparty\lib\Release\libwebp.lib
..\..\3rdparty\lib\Release\libpng.lib
..\..\3rdparty\lib\Release\libtiff.lib
..\..\3rdparty\lib\Release\libjasper.lib
..\..\3rdparty\lib\Release\IlmImf.lib
..\..\3rdparty\lib\Release\zlib.lib
vfw32.lib
comctl32.lib
gdi32.lib
ole32.lib
setupapi.lib
ws2_32.lib
..\..\3rdparty\lib\Release\ittnotify.lib
kernel32.lib
user32.lib
winspool.lib
shell32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
linux:
qt
等等,再添加
一般不知道要吐血,网上找的也特别不靠谱
https://docs.opencv.org/3.4.3/d3/d52/tutorial_windows_install.html
https://docs.opencv.org/3.4.3/dd/d6e/tutorial_windows_visual_studio_opencv.html
http://answers.opencv.org/questions/scope:all/sort:activity-desc/page:1/query:static build/
https://stackoverflow.com/questions/16830842/using-static-libraries-instead-of-dynamic-libraries-in-opencv
https://stackoverflow.com/questions/27491041/opencv-unresolved-external-symbol
http://answers.opencv.org/question/61345/unable-to-link-static-opencv/
https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix
https://stackoverflow.com/questions/13472294/opencv-243-using-static-libs-error-lnk2019
都是一知半解,
最终,我想到了用opencv sample , dlib example
1.cmake构建静态库,
2.设置编译选项
3.编译
之后,可以看到test,demo,sample ,example 的工程依赖, 所以静态库的那些依赖就可以找到了!!!!!!!!!!!!!!!!!


-windows:
测试通过OK
-linux:
todo
****_pch-dephelp.a是预编译头,不是静态库
cd opencv
mkdir build
cd build
cmake -DUSE_AVX_INSTRUCTIONS=1 -DUSE_AVX2_INSTRUCTIONS=1 -DBUILD_SHARED_LIBS=OFF ..
cmake --build . --config Release
有的说必须要以下这些东西?
cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/opencv1 -DWITH_TBB=1 -DWITH_PNG=1 -DWITH_TIFF=1 -DWITH_JPEG=1 -DWITH_JASPER=1 -DBUILD_SHARED_LIBS=0
-llibjasper
-llibjpeg
-llibpng
-lIlmImf
-llibtiff
-ldl
-lz \
cmake opencv,dlib 编译静态库 1的更多相关文章
- android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)
android ndk-build 编译静态库libxx.a 需求场景: 目前有安卓编码好的现在的openssl的两个.a,我们需要调用openssl的函数,并把功能再封装成.a; 这样使用时,在an ...
- opencv编译静态库时选择MD模式无效的原因
在Cmake-gui上看到的明明是MD运行库依赖,生成MS项目时却变成了MT运行库依赖. 原因在于编译静态库时内部做了自动替换.
- 编译静态库的方式使用spdlog和fmt
前言 spdlog++库,而且支持header only方式,但header only的使用方式会造成编译时长增加,所以这里简单描述一下,其编译静态库的方式. 又因为spdlog还依赖另一个开源库fm ...
- 【iOS】编译静态库
与java和.net一样,objc也由类库的概念,不过在在objc上一般叫库,库表示程序代码集合,可以共享给其他程序使用,库是编译后的二进制文件,因此不能看到源代码,多用于一些开放sdk(如百度地图s ...
- 关于使用Visual编译静态库动态库及其使用的问题
本文主要讲述了如何使用Visual Studio 2013 编译静态库和动态库,并使用. 一.静态库 1. 编写静态库 若要创建将引用并使用刚创建的静态库的应用程序,请从“文件”菜单中选择“新建”, ...
- 【转】TI DSP C6657学习之——编译静态库.lib
熟悉C++开发的的小伙伴都知道,我们一般代码中往往要引入许多第三方编译好的库,有些是静态链接库static library, 有些是动态链接库dll.引入库的目的一是减少代码的编译时间,二是只提供函数 ...
- Makefile 编译静态库文件及链接静态库
本文为原创文章,转载需指明该文链接 1.代码目录结构如下: comm/ comm/inc/apue.h 3 atexit.c Makefile 5 staticlib/lib/ staticlib ...
- Xcode 之自己编译静态库
今天介绍下,如何利用Xcode,新建一个静态库,以及如何编译成i386.armv7.armv7s 等平台架构. 开发环境:MAC OS X 10.9.4 + Xcode 5.0.2 背景知识:库分两种 ...
- windows openssl-1.1.1 编译静态库和动态库
一下为windows上安装过程 1.下载 openssl-1.1.0.tar.gz 2.安装 ActivePerl, 可以到http://www.activestate.com/activeperl/ ...
随机推荐
- TextView属性
TextView及其子类,当字符内容太长显示不下时可以省略号代替未显示的字符:省略号可以在显示区域的起始,中间,结束位置,或者以跑马灯的方式显示文字(textview的状态为被选中). 其实现只需在x ...
- PHP环境变量归纳(转自网络)
PHP环境变量主要有$GLOBALS[].$_SERVER[].$_GET[].$_POST[].$_COOKIE[].$_FILES[].$_ENV[].$_REQUEST[].$_SESSION[ ...
- 使用 Python 为 KVM 编写脚本,第 1 部分: libvirt
虚拟化是目前市场上大多数服务器操作系统的标准设备.在 Linux® 的世界里,服务器虚拟化有两个主要选择:基于 Kernel 的虚拟机 (KVM) 和 Xen.KVM 是 Red Hat 和其他公司采 ...
- LeetCode:二叉树相关应用
LeetCode:二叉树相关应用 基础知识 617.归并两个二叉树 题目 Given two binary trees and imagine that when you put one of the ...
- DevExpress实用心得:XtraGridControl动态添加右键菜
在使用GridControl的时候经常需要添加右键菜单. 一般的做法是自己创建菜单项,然后注册GridView的Mouse-Click事件,然后Show出定义好的菜单. 但是涉及到一些单击事件会收到编 ...
- python中reduce()函数
reduce()函数也是Python内置的一个高阶函数.reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收 ...
- 【JavaScript学习整理】js基础
HTML,CSS属于标记语言, JavaScript是基于客户端的脚本语言. 变量: 语法 var 变量名 = value var是系统内部关键字,用来声明变量 变量名规则: 1.不能以数字开头 ...
- 为UniDBEdit添加拖拽属性
不知是作者Fashard的疏忽还是有意,UniDBEdit的拖拽属性居然没有发布出来(其他组件都已发布).加上其实也很简单. 打开source目录下的uniDBEdit.pas单元,在TUniDBEd ...
- LINQ 学习路程 -- 查询操作 Select, SelectMany
IList<Student> studentList = new List<Student>() { , StudentName = "John" }, , ...
- 算法(Algorithms)第4版 练习 2.2.26
在sort函数创建aux数组: package com.qiusongde; import edu.princeton.cs.algs4.In; import edu.princeton.cs.alg ...