CMake 学习笔记 01 - CMake 简介
2017-01-20 16:45
447 查看
CMake 学习笔记 01 - CMake 简介
源代码见 https://github.com/fengyc/cmake-tutorialCMake 是一个跨平台的 makefile 工具,帮助开发者组织 c/c++ 项目。它是比 make 更加高级的工具,能生成不同平台上的 makefile ,如 windows 上的 vcproj 和 mac 上是 xcode 项目。同时,还支持定义安装 install 、测试 ctest 、打包 package 、生成 dashboard 等高级功能。
CMake 使用 CMakeLists.txt 文件定义编译配置,同时能嵌套子目录,子目录中可以有自己的 CMakeLists.txt 。分目录中包含了子目录后,CMake 就能运行子目录中定义的编译配置。
CMake 的官方网站是 http://cmake.org ,由于 KDE 的开发过程中使用 CMake 构建而被大家逐步接受。
CMake 比较简单,但还是需要学习一下一些简单的语法。
这一系列的学习笔记是根据 cmake practice 的学习内容整理的。
CMake 安装
在主要的 linux 发行版中,都可以直接安装 CMake,同时可安装 CMake 相关的配置工具,包括 cmake-curses-gui (提供 ccmake 命令), cmake-qt-gui (提供 cmake-gui 命令)。在 ubuntu 中,直接安装 CMake ::
sudo apt-get install cmake cmake-curses-gui cmake-qt-gui
CMake helloworld
现在来创建一个使用 CMake 进行构建的项目。建立目录 helloworld ,并创建一个 main.c ::
#include <stdio.h> int main(int argc, char* argv[]){ printf("Hello, world!\n"); return 0; }
同时创建一个 CMakeLists.txt ::
PROJECT(HELLO) SET(SRC_LIST main.c) ADD_EXECUTABLE(hello ${SRC_LIST})
开始构建,为了减少对源代码目录的干扰,我们采用外部构建的方法,在 helloworld 里面创建一个 build 目录,在 build 目录中进行构建 ::
mkdir build (cd build; cmake .. ; make)
可看到,在 build 中已生成一堆文件,通过
tree build 命令查看::
build ├── CMakeCache.txt ├── CMakeFiles │ ├── 3.5.1 │ │ ├── CMakeCCompiler.cmake │ │ ├── CMakeCXXCompiler.cmake │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ ├── CMakeSystem.cmake │ │ ├── CompilerIdC │ │ │ ├── a.out │ │ │ └── CMakeCCompilerId.c │ │ └── CompilerIdCXX │ │ ├── a.out │ │ └── CMakeCXXCompilerId.cpp │ ├── cmake.check_cache │ ├── CMakeDirectoryInformation.cmake │ ├── CMakeOutput.log │ ├── CMakeTmp │ ├── feature_tests.bin │ ├── feature_tests.c │ ├── feature_tests.cxx │ ├── hello.dir │ │ ├── build.make │ │ ├── C.includecache │ │ ├── cmake_clean.cmake │ │ ├── DependInfo.cmake │ │ ├── depend.internal │ │ ├── depend.make │ │ ├── flags.make │ │ ├── link.txt │ │ ├── main.c.o │ │ └── progress.make │ ├── Makefile2 │ ├── Makefile.cmake │ ├── progress.marks │ └── TargetDirectories.txt ├── cmake_install.cmake ├── hello └── Makefile
其中包含了 Makefile ,中间文件,生成的最终文件 hello 等。
helloworld 项目使用的指令
helloworld 项目的 CMakeLists.txt 只使用到 3 个指令PROJECT
PROJECT 指令用于说明项目的名称,用法为
PROJECT(项目名),定义了项目名称后,会隐式创建两个 cmake 变量
项目名_SOURCE_DIR和
项目名_BINARY_DIR,同时也会创建
PROJECT_SOURCE_DIR和
PROJECT_BINARY_DIR,其值与前面的一致。
SET
SET 指令用于创建变量,用法为
SET(变量名 [value])。变量在使用时与 shell 有点类型,求值时用
${变量名}。
ADD_EXECUTABLE
ADD_EXECUTABLE用于指定生成一个可执行文件,用法为
ADD_EXECUTABLE(文件名 [源代码列表])
CMake 指令是不区分大小写的,一般建议指令用大写。
在构建时,一般采用外部构建的方式,这也是 cmake 推荐的构建方式。具体的做法是建立一个专门的 build 目录(任何地方均可),然后用
cmake 源代码目录的方式,让所有生成的中间文件都保留在 build 目录中,不会污染原始的源代码目录。清理 cmake 的时候,就可以直接删除整个 build 目录,而不需要整理源代码中的大量中间文件。
相关文章推荐
- iOS-获取视频的任意一帧
- ant style介绍和在spring中的应用
- 随机生成个人信息
- 使Qt5.6支持读取中文路径文件
- Spring 注解说明
- 运行中的mysql状态查看
- 简单的发布脚本
- [生存志] 第122节 金匮真言脉要精微
- STM32学习笔记(三)-----变量和数据
- 在多线程中使用spring的bean
- sql 根据年份、月份查询数据
- WKWebView 白屏问题
- ubuntu及windows下工具
- 普通有序树的遍历
- 实习期间的一点收获
- 股票入门基础知识40:识别并理解价格通道
- Activiti 自由跳转两种实现方式-自我总结
- js动态创建和删除div
- B君的宴请
- jQuery滑动选取数值范围插件