CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dll/.lib/.dylib/...),-L(GCC) LINK_DIRECTORIES() 需要链接的库文件的名字:-l(GCC) LINK_LIBRARIES(库名称即可) 1. 添加头文件目录 INCLUDE_DIRECTORIES 它相当于 g++ 选项中的 -I 参数的作用,也相当于环境变量…
来源网址:http://www.cnblogs.com/binbinjx/p/5626916.html 罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目录INCLUDE_DIRECTORIES 语法: include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) 它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用. includ…
罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目录INCLUDE_DIRECTORIES 语法: include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) 它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用. include_directories(../../../thirdparty/comm/include) 2. 添…
头文件添加方法:工程---属性---配置属性---c/c++---常规---附加包含目录(Additional Include Directories):加上头文件存放目录.注意:(1)路径必须指向头文件所在的子文件夹,而不能直到父文件夹就结束(2)每个路径不需要加上双引号,输入了之后,vs会自动加上双引号,如果自己加可能vs无法识别双引号(3)如果是多个路径,路径直接用“:”隔开.(4)在使用代码处引用这个头文件,#include "xxx.h" 静态库添加方法:添加文件引用的lib…
cmake的使用二:链接第三方静态库…
将NDK编译的第三方静态拷贝到JNI目录下,在Android.mk中添加如下代码 以openssl静态库(libcrypto-static.a)为例 第一种链接方法:LOCAL_LDFLAGS := libcrypto-static.a 第二种链接方法:LOCAL_LDLIBS := libcrypto-static.a 第三种链接方法: include $(CLEAR_VARS) LOCAL_MODULE := third_static_lib (可以随便起一个名字) LOCAL_SRC_FI…
g++在链接*.a静态库时,直接作为object使用,不需要使用-l ,但是需要注意调整顺序,被依赖的文件放在后面. 如: g++  -g  -o0 -Wno-deprecated  -I$(INCLUDE_PATH)  -L(LIB_PATH) -l(lib) $?  /hom/entity_base/libentity_base.a  /home/biz_entity/libbiz_entity.a -o $@…
Linux静态库和动态库的命名规则 静态函数库 静态库的名字一般是libxxx.a,利用静态库编译生成的文件比较大,因为整个静态库所有的数据都会被整合进目标代码中. a) 优点: 编译后,可执行文件不需要外部支持: b) 缺点: 生成的可执行程序大:静态库改变了,就需要重新编译可执行程序. 动态函数库 动态库的名字一般是libxxx.so,相对于静态库,动态函数库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用函数库里面相应的函数,因此使用动态函数库生成的可执行文件比较小.由…
最近工作需要使用一些加密算法.之前尝试过cryptopp以及polarssl,听说openssl中的加密模块特别全,并且特别好用.于是想尝试一下. 一.环境配置 下载openssl,我这里使用的是openssl-1.0.1s.解压后查看自带的win32说明文件.我这里解压到d盘 按照安装说明下载activeperl. 二.编译静态库 执行命令: cd D:\openssl-1.0.1s D: perl Configure VC-WIN32 no-asm --prefix=D:\openssl-1…
转帖:http://blog.csdn.net/whygosofar/article/details/2821875 MSDN中对于在不同的配置下Link的LIB作了说明: C Runtime Library: 开关 对应的库 版本 /MD MSVCRT.LIB 多线程DLL的Release版本 /MDd MSVCRTD.LIB 多线程DLL的Debug版本 /MT LIBCMT.LIB 多线程静态链接的Release版本 /MTd LIBCMTD.LIB 多线程静态链接的Debug版本 /cl…
在Xcode6以前,创建framework可以使用iOS-Universal-Framework模板来创建framework,现在苹果已经提供了模板,如下图选择: 使用此模版创建的默认是动态库,方法和上节提到的.a一样,也可以使用lipo来合并真机和模拟器的库. 还有自定义动态库的应用是不被允许上传的. 动态库应该被添加到的位置如下:在工程配置的General之中. 因此应该生成静态库,更改配置的方法如下: framework相比.a,优点是会自动把资源包含到framework内.…
库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种.  1  静态库和动态库的区别1.1. 静态函数库    (1)静态函数库的名字一般是lib[name].a(2)利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,它的优点是编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了.这给它带来的缺点为如果静态函数库改变了,那么你的程序必须重新编译.1.2. 动态函数库    (1)动态函数库的名字一般是li…
step one: 进入静态库文件的目录 cd 路径: step two:使用命令添加 svn add 静态库名字; 然后更新一下代码就OK…
右键点击项目,选择“properties”, Additional include references:头文件路径,分号隔开. Additional library directories:…
环境:CentOS6.6+tinyxml_2_6_21.下载并解压tinyxml_2_6_2.zip unzip tinyxml_2_6_2.zip 2.在tinyxml文件夹里创建一个CMakeLists.txt文件,并将内容设置为 cmake_minimum_required(VERSION 2.8) project(TinyXMLLIB) include_directories(./) aux_source_directory(./ LIB_SRCS) #add_definitions(-…
1. 2. CMake "/work/lib/opencv/ubuntu14/4.1.0" make[2]: *** No rule to make target `/usr/local/ffmpeg/lib/libavcodec.so', needed by `libpic_detection_service.so'.  Stop. 3. 4.…
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX <CMake实践>笔记三:构建静态库与动态库 及 如何使用外部共享库和头文件 五.静态库与动态库构建 读者云,太能罗唆了,一个Hello World就折腾了两个大节.OK,从本节开始,我们不再折腾Hello World了,我们来折腾Hello World的共享库. 本节的任务: 1.建立一个静态库和动…
目录 . 引言 . 交叉编译 . Cygwin简介 . 静态库编译及使用 . 动态库编译及使用 . MinGW简介 . CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统.linux是unix的克隆版本,是由其创始人Linus和诸多世界知名的黑客手工打造的一个操作系统.为什么linux和unix之间有很多软件可以很轻松的移植?因为linux也满足POSIX规范,所以在运行机制上跟unix相近.同时,POSIX标准也是Li…
在平常的项目中,我们都是使用公司要求的makefile.makedebug一类的文件,因此,在编译.链接.生成和链接动态库与静态库的时候,我们只是简单的使用一些已经设置的变量,只是简单的修改.添加一些文件名,或许这次我们编译通过了,但是,在某一个时候,可能出现了一个问题,无论简单与否,因为平常没有留意,导致的结果可能是花了好长时间才能解决.而如果平常只是简单的留一下心,或许这些问题都是可以避免的. 因此,今天我自己使用几个文件,编译动态库.静态库以及动态库和静态库的嵌套调用等问题,尽量还原我在项…
前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”).  静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起.比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子.  动态库一般会有对应的导入库,方便程序静态载入动态链接库,否则你可能就需要自己LoadL…
1.golang链接c静态库的方法可以见这个示例: https://github.com/atercattus/go-static-link-example https://github.com/shadowmint/go-static-linking https://github.com/AlekSi/cgo-by-example            (这个示例我自己有改动,可以在我的云盘里找到,doc/golang/AlekSi.tar) 2.golang链接c动态库的方法和静态库差不多.…
关于VS2013下制作和使用静态库和动态库 引言 什么是库:库是写好的现有的,成熟的,可以复用的代码. 所谓静态.动态是指链接.将一个程序编译成可执行程序的步骤: 静态库在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中.因此对应的链接方式称为静态链接. 为什么还需要动态库? 空间浪费是静态库的一个问题. 另一个问题是静态库对程序的更新.部署带来麻烦.如果静态库liba.lib更新了,所以使用它的应用程序都需要重新编译.发布给用户(对于玩家来说,可能是一个很小的改动,却…
原文:http://blog.csdn.net/lwb102063/article/details/52068389   附加头文件包含 VC6.0中: VC6.0默认include包含路径:Tools>Options>Directories>Include files. 对于特定项目的头文件包含,在“Project Setting>C/C++ (Category:Preprocessor)>Additional include directories”处添加附加头文件目录,…
无论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), 还可以…
1. 静态库lib和动态dll的区别 1.1 项目类型 VS在建Win32项目时,有以下选项: windows应用程序控制台应用程序DLL静态库最后两个类型:DLL和静态库,这两种项目类型是不可以单独运行的,必须在Windows应用程序调用他们执行,是提供的库函数而已. 1.2 两种lib的区别: (1)静态库(.lib) 函数和数据被编译进一个二进制文件(通常扩展名为.LIB).在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建…
1. 静态库 创建 工程属性配置中设置为lib静态库,编辑.h文件和.c文件,生成即可. 使用 方法一: 添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. 添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录. 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名. 方法二: #pragma co…
1. 静态库和动态库 1.1 静态库(.lib) 函数和数据被编译进一个二进制文件(通常扩展名为.LIB).在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件).当发布产品时,只需要发布这个可执行文件,并不需要发布被使用的静态库. 1.2 动态库(.lib文件和.dll文件) 在使用动态库的时候,往往提供两个文件:一个引入库(.lib)文件(也称“导入库文件”)和一个DLL(.dll)文件.虽然引入库…
cmake_minimum_required(VERSION 3.6) project(capi_lua) include_directories(/usr/include) find_library(LUALIB lua /usr/lib) set(SOURCE_FILES main.c) add_executable(capi_lua ${SOURCE_FILES}) target_link_libraries(capi_lua ${LUALIB}) 1.使用include_director…
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库,多个应用程序共享内存中得同一份库文件,节省资源 3使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更新应用程序的目的. 从1可以得出,将整个应用程序分模块,团队合作,进行分工,影响比较小. 等其他好处, 从2可以看出,其实动态库应该叫共享库,那么从这个意义上来说,苹果禁止iOS开…
Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序编译的过程 .o文件(目标文件) 创建atoi.o 使用atoi.o .a文件(静态库文件) 创建atoi.a 使用atoi.a .so文件(共享库文件) 创建atoi.so 使用atoi.so .la文件(libtool archive) libtool的使用 1. 创建 Libtool 对象文件 2. 创建 Libtool 库 3. 安装 Libtool 库…