![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
cmake
sif_666
If you can't explain it to a six year old, you don't understand it yourself.
展开
-
cmake-变量作用域
本文的目标是讲讲cmake中的变量。在一个复杂的cmake工程中,变量经常会被传来传去,只有搞懂变量的原理和本质,才能以不变应万变,而不会出现"变量的值是从哪儿来的问题"。要想将变量讲清楚,涉及的新的知识点还比较多,看完本文一定有所收获。文章目录变量(variables)Function ScopeDirectory ScopePersistent Cache变量(variables)Variables are the basic unit of storage in the CMake Langu原创 2020-08-31 09:31:26 · 5879 阅读 · 0 评论 -
cmake-自动识别新增子模块
实际的项目中可能会有这种需求,随着项目的进行,会有新增的子模块,如果每新增一个子模块,顶层CMakeLists.txt都要同步修改一次,一般工程代码加入了版本控制,那么顶层CMakeList.txt每次都要提交,这种低效的重复性动作就要坚决干掉。要怎么干呢?就是本文要介绍的方法。同时也会详细介绍涉及的小知识点。目录结构|-- build|-- CMakeLists.txt`-- src |-- inc |-- main.c |-- module1 | `-- CM原创 2020-08-28 09:17:21 · 1868 阅读 · 0 评论 -
cmake-debug和release模式
一般在工程中,自动构建可能会编译两个版本的发布包,一个debug版本,一个release版本。那么通过cmake怎样来实现呢?本文就以这个需求为例,来介绍cmake中的逻辑控制。目录结构|-- bin|-- build|-- CMakeLists.txt|-- src| `-- main.cDebug-Release模式控制顶层CMakeLists.txtcmake_minimum_required(VERSION 3.12)project(test07)aux_source原创 2020-08-27 09:07:54 · 25093 阅读 · 0 评论 -
cmake-多模块工程的编译
承接上文 cmake-外部库的导入引出的问题:假设有这样一个需求,一个大型工程的编译中,不仅要有可执行程序生成,而且还有动态库的生成,或者说构建一个sdk。显然就会涉及子模块的编译问题,接下来我们将要解决这个问题。文章目录目录结构目录结构说明功能说明apple.cpear.corange.cmain.cCMakeLists.txt顶层CMakeLists.txtadd_subdirectory()src/CMakeLists.txtsrc/apple/CMakeLists.txtsrc/orange/CM原创 2020-08-26 09:00:06 · 9379 阅读 · 3 评论 -
cmake-外部库的导入
在上一篇文章的最后,对于外部库的依赖,我直接使用了gcc进行编译。因为示例非常简单的缘故,所以使用这种方式没毛病。试想一下,如果是一个综合性的工程,显然这种方式就显得不合适了。当然除了cmake外还有其他的编译构建工具,由于本系列文章的主角儿是cmake,所以本文使用cmake来展示外部库的导入编译。文章目录目录结构mian.cCMakeLists.txt方法一link_directories()target_link_libraries()方法二find_library()编译目录结构.|-- b原创 2020-08-25 09:08:38 · 6764 阅读 · 0 评论 -
cmake-动态库和静态库的编译
本文介绍使用cmake来编译动态库和静态库,源码非常简单,重点是掌握文件的组织方式以及cmake的使用。文章目录目录结构add.cCMakeLists.txtCMAKE_ARCHIVE_OUTPUT_DIRECTORYCMAKE_LIBRARY_OUTPUT_DIRECTORYadd_library编译main.clibadd.solibadd_static.a目录结构.|-- build|-- CMakeLists.txt|-- inc| `-- add.h|-- lib # 动态原创 2020-08-24 08:13:51 · 5382 阅读 · 0 评论 -
cmake-编译可执行程序
本例演示使用cmake编译一个可执行程序,并指定可执行程序的生成目录。文章目录示例目录结构add.cmain.cCMakeLists.txtinclude_directories()CMAKE_RUNTIME_OUTPUT_DIRECTORYset()编译示例目录结构|-- build|-- CMakeLists.txt|-- inc # 头文件目录| `-- add.h|-- lib|-- out # 可执行程序生成目录`-- src # 源文件目录 |-- ad原创 2020-08-22 18:18:04 · 1488 阅读 · 0 评论 -
cmake-入门篇
1 什么是CMake?Cmake是一个编译、构建工具。使用CMakeLists.txt来描述构建过程,可以生成标准的构建文件,如Makefile。一般先编写CMakeLists.txt,然后通过cmake来生成Makefile,最后执行make进行编译。1.1 cmake安装 在ubuntu上安装cmake非常简单,执行sudo apt-get install cmake即可。如果想安装最新的cmake版本,就需要自己进行源码编译安装。源码下载。源码编译安装非常简单,这里就不再详细描述了。1.2原创 2020-08-21 20:11:31 · 727 阅读 · 0 评论