cmake 头文件 库文件
目录
配置release
库导出目录
添加依赖库
其他知识
最后贴一个完整的例子
配置release
选择release或debug版本:
cmake 编译Release版本_jacke121的专栏-CSDN博客_make release
库导出目录
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/demo)SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../libquality)
添加依赖库
头文件:
include_directories(${CMAKE_SOURCE_DIR}/includes)
库文件:
add_library( xxx SHARED IMPORTED ) set_target_properties( xxx PROPERTIES IMPORTED_LOCATION ${lib_DIR}/${ANDROID_ABI}/libxxx.so )
其他知识
头文件目录:cmake include_directories
cmake_install_prefix 好像也是头文件的根目录
CMake支持大写、小写、混合大小写的命令。
1. 添加头文件目录INCLUDE_DIRECTORIES
语法:
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用。
include_directories(../../../thirdparty/comm/include)
2. 添加需要链接的库文件目录LINK_DIRECTORIES
语法:
link_directories(directory1 directory2 ...)
它相当于g++命令的-L选项的作用,也相当于环境变量中增加LD_LIBRARY_PATH的路径的作用。
link_directories("/home/server/third/lib")
3. 查找库所在目录FIND_LIBRARY
语法:
A short-hand signature is:find_library (<VAR> name1 [path1 path2 ...]) The general signature is:find_library (<VAR>name | NAMES name1 [name2 ...] [NAMES_PER_DIR][HINTS path1 [path2 ... ENV var]][PATHS path1 [path2 ... ENV var]][PATH_SUFFIXES suffix1 [suffix2 ...]][DOC "cache documentation string"][NO_DEFAULT_PATH][NO_CMAKE_ENVIRONMENT_PATH][NO_CMAKE_PATH][NO_SYSTEM_ENVIRONMENT_PATH][NO_CMAKE_SYSTEM_PATH][CMAKE_FIND_ROOT_PATH_BOTH |ONLY_CMAKE_FIND_ROOT_PATH |NO_CMAKE_FIND_ROOT_PATH])
例子如下:
FIND_LIBRARY(RUNTIME_LIB rt /usr/lib /usr/local/lib NO_DEFAULT_PATH)
cmake会在目录中查找,如果所有目录中都没有,值RUNTIME_LIB就会被赋为NO_DEFAULT_PATH
4. 添加需要链接的库文件路径LINK_LIBRARIES
语法:
link_libraries(library1 <debug | optimized> library2 ...)
# 直接是全路径 link_libraries(“/home/server/third/lib/libcommon.a”)
# 下面的例子,只有库名,cmake会自动去所包含的目录搜索 link_libraries(iconv)# 传入变量 link_libraries(${RUNTIME_LIB})
# 也可以链接多个 link_libraries("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so" "/opt/MATLAB/R2012a/bin/glnxa64/libmx.so")
可以链接一个,也可以多个,中间使用空格分隔.
5. 设置要链接的库文件的名称TARGET_LINK_LIBRARIES
语法:
target_link_libraries(<target> [item1 [item2 [...]]][[debug|optimized|general] <item>] ...)
# 以下写法都可以: target_link_libraries(myProject comm) # 连接libhello.so库,默认优先链接动态库 target_link_libraries(myProject libcomm.a) # 显示指定链接静态库 target_link_libraries(myProject libcomm.so) # 显示指定链接动态库# 再如: target_link_libraries(myProject libcomm.so) #这些库名写法都可以。 target_link_libraries(myProject comm) target_link_libraries(myProject -lcomm)
6. 为工程生成目标文件 语法:
add_executable(<name> [WIN32] [MACOSX_BUNDLE][EXCLUDE_FROM_ALL]source1 [source2 ...])
简单的例子如下:
add_executable(demomain.cpp )
最后贴一个完整的例子
cmake_minimum_required (VERSION 3.1)INCLUDE_DIRECTORIES(../../thirdparty/comm)FIND_LIBRARY(COMM_LIB comm ../../thirdparty/comm/lib NO_DEFAULT_PATH) FIND_LIBRARY(RUNTIME_LIB rt /usr/lib /usr/local/lib NO_DEFAULT_PATH)link_libraries(${COMM_LIB} ${RUNTIME_LIB})ADD_DEFINITIONS( -O3 -g -W -Wall-Wunused-variable -Wunused-parameter -Wunused-function -Wunused-Wno-deprecated -Woverloaded-virtual -Wwrite-strings-D__WUR= -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DTIXML_USE_STL )add_library(lib_democmd.cppglobal.cppmd5.cpp )link_libraries(lib_demo) add_executable(demomain.cpp )# link library in static mode target_link_libraries(demo libuuid.a)
另外,使用cmake生成makefile之后,make edit_cache可以编辑编译选项。不熟悉的命令可以去查找文档,贴个cmake3.0官方帮助文档地址 https://cmake.org/cmake/help/v3.0/index.html ============================================== 最近在搭建自己的博客,欢迎来逛。 https://sharebook.wang
cmake 头文件 库文件相关推荐
- cmake 头文件 库文件 路径搜索 CMAKE_INCLUDE_PATH CMAKE_LIBRARY_PATH
目录 cmake中定义搜索路径 修改环境变量增加搜索路径 FIND 系列指令,通过FIND寻找路径并进行添加 大型开源库路径添加方式 find_package采用两种模式搜索库 路径搜索,这里介绍头文 ...
- cmake 如何指定 库文件
case 1 有多个opencv版本,如何通过find_package使用不同版本的opencv呢? Cmake中选择opencv版本_why_smile的博客-CSDN博客_cmake opencv ...
- vs2015 全局头文件 库文件引用设置方法
有两种方法可以设置vs2010的默认包含路径 方法一: 点击"视图->其他窗口->属性管理器",在打开的属性管理器中选择Microsoft.Cpp.Win32.user ...
- CMake教程(二)- 添加静态库文件和动态库文件
CMake教程(二)- 添加静态库文件和动态库文件 什么是库文件 静态链接库 动态链接库 静态库和动态库的区别 如何在CMake中添加库文件 CMake 中 target_link_libraries ...
- 【Linux】Linux文件与文件的存储
文件的基本概念 文件就是一组按照某种格式组织的具有完整逻辑意义的信息. 从使用和创建文件的用户角度来看,文件是磁盘的最小存储单元,用户数据除非在文件中,否则不能保存到磁盘:从进程的角度来看,文件是一种 ...
- 【cmake学习】cmake 引入第三方库(头文件目录、库目录、库文件)
程序的编写需要用到头文件,程序的编译需要lib文件,程序的运行需要dll文件,因此cmake引入第三方库其实就是将include目录.lib目录.bin目录引入工程. 目录 1.fin ...
- C++库文件和头文件编写教程
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 「本文介绍了在Linux系统下生成库文件,以及编写头文件来使用该库 ...
- 006 - CMake 安装动态库并生成 XxxConfig.cmake 文件
CMake 安装动态库并生成 XxxConfig.cmake 文件 文章目录 CMake 安装动态库并生成 XxxConfig.cmake 文件 引言 展示 简单解释CMakeLists.txt se ...
- Linux找头文件规则,linux 头文件、库文件查找顺序
linux 头文件.库文件查找顺序 默认分类 2009-11-14 01:24:28 阅读126 评论0 字号:大中小 linux 头文件.库文件查找顺序 2009-11-03 12:36 Inclu ...
最新文章
- typeorm 更新_再热我们也在更新 - Midway 8 月内容汇总
- JavaScript核心语法总结
- gettext 国际化_如何使用Gettext在Phoenix应用程序中执行本地化
- 面向对象淡入淡出轮播图(附带面向过程)
- Java计算机毕业设计电脑小白网站源码+系统+数据库+lw文档
- 【AD10】Altium Designer 10导入元件库图文教程
- 金蝶k3wise云服务器配置,金蝶K3WISEV15.0系统配置说明
- Jlink 接口定义
- 网页设计与制作期末大作业报告——动画家宫崎骏
- 常见的http状态码以及https的通讯过程和DNS的解析过程
- 1-5(中文版)听力积累
- 计算机导论模板,计算机导论论文提纲范文模板 计算机导论论文大纲怎样写
- Win10彻底关闭Windows Defender
- LCD12864驱动(Proteus中用51单片机驱动AMPIRE128X64)
- python程序员可以从哪些平台接单赚钱?看完我给你介绍的这几个平台,没学过python的你也能边学习边赚钱
- c++代码实现我的世界
- Box2D 源码编译
- 【19调剂】齐鲁工业大学(山东省科学院)2019年硕士研究生预调剂信息
- 入耳式蓝牙耳机哪个牌子好用?四款高品质音乐游戏耳机
- 20212323 CSDN Python技能树和Markdown编辑器测评
热门文章
- 十张图解释机器学习的基本概念
- append 降低数组位数_腿粗有理!研究发现腿部脂肪多,能大幅降低患高血压的风险!...
- 你的计算机无法启动一键还原,教你电脑怎么一键还原
- html读取url中文件,HTML5基础知识 - JavaScript API - File - 读取文件为DataURL
- android 自定义textview 垂直滚动,Android中TextView如何实现水平和垂直滚动
- NeHe教程Qt实现——lesson05
- 写一个不能被继承的类(友元的不可继承性)
- jboss7 java版本,jdk 1.7推荐使用什么社区版本的Jboss以及为什么
- linux java maven_Linux下安装及配置Java与Maven
- android仿ios城市选择,Android 省市区三级联动选择器(仿iOS滚轮实现)