zoukankan      html  css  js  c++  java
  • CMake的作用和价值--概念简介

    一 简介:

     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实践

    作者:虚生
    出处:https://www.cnblogs.com/dylancao/
    以声学降噪算法为核心的物联网音频解决方案提供商 ,提供基于声学技术为基础的智能硬件产品设计,开发和技术服务。
    商务合作和技术探讨:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188
  • 相关阅读:
    addEventListener-第三个参数 useCapture
    介绍(javascript调试)
    Linux_PXE服务器_RHEL7
    Linux_PXE服务器_RHEL7
    Linux_OpenSSH远程连接
    Linux_OpenSSH远程连接
    Python基本语法_强制数据类型转换
    Python基本语法_强制数据类型转换
    Linux_NetworkManager_RHEL7
    Linux_NetworkManager_RHEL7
  • 原文地址:https://www.cnblogs.com/dylancao/p/14448043.html
Copyright © 2011-2022 走看看