Fork me on GitHub

一 简介:

 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

 

二 特点:

 

1. 开放源代码,使用类 BSD 许可发布。http://cmake.org/HTML/Copyright.html

2. 跨平台,并可生成 native 编译配置文件,在 Linux/Unix 平台,生成 makefile,在苹果平台,可以生成 xcode,在 Windows 平台,可以生成 MSVC 的工程文件。

3. 能够管理大型项目,KDE4 就是最好的证明。

4. 简化编译构建过程和编译过程。Cmake 的工具链非常简单:cmake+make。

5. 高效虑,按照 KDE 官方说法,CMake 构建 KDE4 的 kdelibs 要比使用 autotools 来构建 KDE3.5.6 的 kdelibs 快 40%,主要是因为 Cmake 在工具链中没有 libtool

6. 可扩展,可以为 cmake 编写特定功能的模块,扩充 cmake 功能。

 

三 编译:

 

1. 编写 CMake 配置文件 CMakeLists.txt 。

2. 执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile。其中, PATH 是 CMakeLists.txt 所在的目录。

3. 使用 make 命令进行编译。

 

四 建议:

 

1,如果你没有实际的项目需求,那么看到这里就可以停下来了,因为 cmake 的学习过程就

是实践过程,没有实践,读的再多几天后也会忘记。

2,如果你的工程只有几个文件,直接编写 Makefile 是最好的选择。
3,如果使用的是 C/C++/Java 之外的语言,请不要使用 cmake(至少目前是这样) 4,如果你使用的语言有非常完备的构建体系,比如 java 的 ant,也不需要学习 cmake,

虽然有成功的例子,比如 QT4.3 的 csharp 绑定 qyoto。 

4,如果仅仅使用 qt 编程,没有必要使用 cmake,因为 qmake 管理 Qt 工程的专业性和自 动化程度比 cmake 要高很多。

5,如果项目已经采用了非常完备的工程管理工具,并且不存在维护问题,没有必要迁移到cmake

 

五 参考:

1 博客:

https://blog.csdn.net/xierhacker/article/details/79445339?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=867b55e2-befc-4e0b-85ac-8c27ef3c2e31&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

2 书籍:cmake实践

posted on 2021-02-25 17:10  虚生  阅读(3319)  评论(0编辑  收藏  举报