Linux下的库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀
Windows 下.DLL是动态链接库, .LIB是静态链接库
动态库与静态库的区别
- 动态库个编译好的程序,程序运行时可以直接调用其中的函数, 不参加工程的编译.
- 而静态库应该说是一个程序集, 只是把一些相应的函数总结在一起, 如果调用静态库中的函数,在编译时,这些调用的函数都将参加编译
静态库必要的目标代码的是在对程序编译的时候被加入到程序中,而运行时不再需要.a的库了
而动态库,则是在运行时转载
从内存管理的角度来看
- 静态库必须被链接到主程序中,主程序进入内存,静态库也同时进入内存
- 而动态库则是需要用到它的时候由操作系统调入内存
include_directories()
cmake使用 include_directories是用来 提供搜索头文件路径
cmake本身不提供任何搜索库的便捷方法,所有搜索库并给变量赋值的操作必须由cmake代码完成
比如,我现在想要#include"cv.h",但是这个cv.h的路径是/usr/local/include/opencv,那么我总不能在主函数头前写#include “/usr/local/include/opencv/cv.h”吧,这个时候就用到include_directories了,它提供了一个搜索头文件暂时的根目录
即你可以在cmakelists中写上include_directories(/usr/local/include)来让库文件搜索以/usr/local/include为基础,即在main函数前写上#include “ope