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/ ...
随机推荐
- 次小生成树Tree
次小生成树Treehttps://www.luogu.org/problemnew/show/P4180 题目描述 小C最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等.正 ...
- 我的Android进阶之旅------>MIME类型大全
今天在实现一个安装apk的代码中看到一段代码为:application/vnd.android.package-archive,不知其意,所以百度了一下,了解到这是一种MIME的类型,代表apk类型. ...
- hibernate Session的CRUD操作
使用Session里面的方法进行CRUD操作 (1) 增加 save 方法 (2) 查找 get 方法(根据id查) (3) 修改 update 方法 (4) 删除 delete 方法 1.增加 /* ...
- sqlalchemy——基本操作
以下所有代码片段都使用了统一的引用,该引用如下: from sqlalchemy import create_engine, ForeignKey from sqlalchemy.ext.declar ...
- linux shell 基础 使用日志与心得
linux shell 基础 使用日志与心得 1.#!/bin/bash 第一行就出现#!/bin/bash是指此脚本使用/bin/bash来解释执行.其中,#!是一个特殊的表示符,其后,跟着解释此脚 ...
- 【leetcode刷题笔记】Search in Rotated Sorted Array II
Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...
- Vue 5小时学习小教程
Vue Vue Vue 起步 指令 v-bind v-if v-for v-on v-model v-bind和v-on缩写 搭建Vue开发环境 vue项目结构 Vue开始 数据绑定, 绑定属性 循环 ...
- LINQ 学习路程 -- 查询操作 OrderBy & OrderByDescending
Sorting Operator Description OrderBy 通过给定的字段进行升序 降序 排序 OrderByDescending 通过给定字段进行降序排序,仅在方法查询中使用 Then ...
- LightOJ 1138 二分
1138 - Trailing Zeroes (III) PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...
- php数组转换成js可用的数组的两种方式
1.如果你理解JSON数据格式的话,这个问题就异常简单: <?php $a =array('1','2','3'); ?> <script language="javasc ...