0 引言

大量开源库需要通过cmake编译后使用,了解cmake的基本指令以及CMakeLists.txt的写法非常重要,其基础是了解编译原理。另外,为了对cmake编译的代码进行调试,需要了解CMakeList.txt的写法。本文将对这些关键问题进行探讨,并记录一些关键点。

参考了如下链接。

https://blog.csdn.net/wzzfeitian/article/details/40963457/  # cmake使用示例与整理总结

https://cmake.org/cmake/help/v3.3/command/target_link_libraries.html  #  cmake official documentation

# cmake相关的教程
https://tuannguyen68.gitbooks.io/learning-cmake-a-beginner-s-guide/content/chap1/chap1.html

1 cmake编译原理

cmake通过指定源文件、外部include文件、 静态链接库(.a/.lib)文件、动态链接库(.so/.dll)文件的路径,以及生成文件的路径,将整个程序有序地组织起来,最终达到生成可执行程序的目的。

2 cmake commands(常用)

()cmake中的指令对大小写不敏感。
()PROJECT(project):工程名,一般采用最上层文件夹名
()ADD_SUBDIRECTORY(add_subdirectory):附加目录名,一般为src的目录,在文件比较多的时候采用
()LINK_DIRECTORIES (link_directories):静态链接库目录,供linker(链接器)使用
()ADD_EXECUTABLE (add_executable):可执行文件
()INCLUDE_DIRECTORIES(include_directories): .h头文件
()TARGET_LINK_LIBRARIES(target_link_libraries): .so文件,格式是 target_link_libraries(可执行文件名 链接库地址及文件)
  写法为:以libboost_system.so.1.58.o 为例 “-lboost_system”

3 cmake预定义变量

$PROJECT_SOURCE_DIR$ : 工程的根目录
$PROJECT_BINARY_DIR$ : 运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/build

4 cmake的CMakeLists.txt语法

常用变量的意义解释都有,链接如下。

https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/Useful-Variables

5 cmake参数运用

(1)区分debug和release的方法:

点击Add Entry添加   Name:    CMAKE_DEBUG_POSTFIX 、Type:    STRING 、Value:-gd、Description:空

最新文章

  1. linux系统免密码登陆
  2. Cordova - 使用Cordova开发iOS应用实战1(配置、开发第一个应用)
  3. 【leetcode】Same Tree(easy)
  4. Sql Server 2008修改Sa密码
  5. OC中几种集合的遍历方法(数组遍历,字典遍历,集合遍历)
  6. java socket 一个服务器对应多个客户端,可以互相发送消息
  7. jstl if条件判断字符串代码
  8. (转)用JS判断ckeditor3.6版本编辑器内容为空的方法
  9. SQL 数据库语言分析总结(三)
  10. JVM(HotSpot) 7种垃圾收集器的特点及使用场景
  11. 【堆】【洛谷例题】p1090 p1334 p1177
  12. 解决ionic <ion-nav> rootParams获取不到参数
  13. 05Hadoop 概论
  14. ionic 打包 报错Execution failed for task ':processDebugResources'. > com.android.ide.common.process.ProcessException: Failed to execute aapt
  15. Python sqlalchemy orm 多对多外键关联
  16. TensorFlow 安装教程
  17. python-Levenshtein几个计算字串相似度的函数解析
  18. Objective-C内存布局
  19. Spring data jpa Specification查询关于日期的范围搜索
  20. jdbcmysql

热门文章

  1. string::size_type 页73 size_t 页90
  2. Sql 语法整理
  3. web框架express学习一
  4. linux IPC的信号量
  5. java——IO(普通文件,二进制文件,压缩文件 )
  6. stl+数论——1247D
  7. PHP base64_decode+gzinflate压缩和解密代码图文教程
  8. Arduino与水泵实验+土壤湿度传感器
  9. plsql初次连接oracle报错解决方案
  10. 使用redis实现客户端和服务端token验证