目录

配置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 头文件 库文件相关推荐

  1. cmake 头文件 库文件 路径搜索 CMAKE_INCLUDE_PATH CMAKE_LIBRARY_PATH

    目录 cmake中定义搜索路径 修改环境变量增加搜索路径 FIND 系列指令,通过FIND寻找路径并进行添加 大型开源库路径添加方式 find_package采用两种模式搜索库 路径搜索,这里介绍头文 ...

  2. cmake 如何指定 库文件

    case 1 有多个opencv版本,如何通过find_package使用不同版本的opencv呢? Cmake中选择opencv版本_why_smile的博客-CSDN博客_cmake opencv ...

  3. vs2015 全局头文件 库文件引用设置方法

    有两种方法可以设置vs2010的默认包含路径 方法一: 点击"视图->其他窗口->属性管理器",在打开的属性管理器中选择Microsoft.Cpp.Win32.user ...

  4. CMake教程(二)- 添加静态库文件和动态库文件

    CMake教程(二)- 添加静态库文件和动态库文件 什么是库文件 静态链接库 动态链接库 静态库和动态库的区别 如何在CMake中添加库文件 CMake 中 target_link_libraries ...

  5. 【Linux】Linux文件与文件的存储

    文件的基本概念 文件就是一组按照某种格式组织的具有完整逻辑意义的信息. 从使用和创建文件的用户角度来看,文件是磁盘的最小存储单元,用户数据除非在文件中,否则不能保存到磁盘:从进程的角度来看,文件是一种 ...

  6. 【cmake学习】cmake 引入第三方库(头文件目录、库目录、库文件)

    程序的编写需要用到头文件,程序的编译需要lib文件,程序的运行需要dll文件,因此cmake引入第三方库其实就是将include目录.lib目录.bin目录引入工程.         目录 1.fin ...

  7. C++库文件和头文件编写教程

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 「本文介绍了在Linux系统下生成库文件,以及编写头文件来使用该库 ...

  8. 006 - CMake 安装动态库并生成 XxxConfig.cmake 文件

    CMake 安装动态库并生成 XxxConfig.cmake 文件 文章目录 CMake 安装动态库并生成 XxxConfig.cmake 文件 引言 展示 简单解释CMakeLists.txt se ...

  9. Linux找头文件规则,linux 头文件、库文件查找顺序

    linux 头文件.库文件查找顺序 默认分类 2009-11-14 01:24:28 阅读126 评论0 字号:大中小 linux 头文件.库文件查找顺序 2009-11-03 12:36 Inclu ...

最新文章

  1. typeorm 更新_再热我们也在更新 - Midway 8 月内容汇总
  2. JavaScript核心语法总结
  3. gettext 国际化_如何使用Gettext在Phoenix应用程序中执行本地化
  4. 面向对象淡入淡出轮播图(附带面向过程)
  5. Java计算机毕业设计电脑小白网站源码+系统+数据库+lw文档
  6. 【AD10】Altium Designer 10导入元件库图文教程
  7. 金蝶k3wise云服务器配置,金蝶K3WISEV15.0系统配置说明
  8. Jlink 接口定义
  9. 网页设计与制作期末大作业报告——动画家宫崎骏
  10. 常见的http状态码以及https的通讯过程和DNS的解析过程
  11. 1-5(中文版)听力积累
  12. 计算机导论模板,计算机导论论文提纲范文模板 计算机导论论文大纲怎样写
  13. Win10彻底关闭Windows Defender
  14. LCD12864驱动(Proteus中用51单片机驱动AMPIRE128X64)
  15. python程序员可以从哪些平台接单赚钱?看完我给你介绍的这几个平台,没学过python的你也能边学习边赚钱
  16. c++代码实现我的世界
  17. Box2D 源码编译
  18. 【19调剂】齐鲁工业大学(山东省科学院)2019年硕士研究生预调剂信息
  19. 入耳式蓝牙耳机哪个牌子好用?四款高品质音乐游戏耳机
  20. 20212323 CSDN Python技能树和Markdown编辑器测评

热门文章

  1. 十张图解释机器学习的基本概念
  2. append 降低数组位数_腿粗有理!研究发现腿部脂肪多,能大幅降低患高血压的风险!...
  3. 你的计算机无法启动一键还原,教你电脑怎么一键还原
  4. html读取url中文件,HTML5基础知识 - JavaScript API - File - 读取文件为DataURL
  5. android 自定义textview 垂直滚动,Android中TextView如何实现水平和垂直滚动
  6. NeHe教程Qt实现——lesson05
  7. 写一个不能被继承的类(友元的不可继承性)
  8. jboss7 java版本,jdk 1.7推荐使用什么社区版本的Jboss以及为什么
  9. linux java maven_Linux下安装及配置Java与Maven
  10. android仿ios城市选择,Android 省市区三级联动选择器(仿iOS滚轮实现)