zoukankan      html  css  js  c++  java
  • IDE、Cmake、makefile、make

    makefile :就是一个类似脚本的文件,根据一系列规则用于决定哪些文件先编译,哪些文件重新编译等等。甚至于进行更复杂的功能操作,而且还可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

    make是一个命令工具,是一个解释makefile中指令的命令工具。一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。

    这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。

    这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。 

    makefile成为了一种在工程方面的编译方法。 makefile通常依赖于你当前的编译平台,而且编写makefile的工作量比较大,解决依赖关系时也容易出错。

    这就是make和makefile两者之间的关系。make之后生成obj中间文件,再link一下就生成可执行文件了。

    CMake CMake

     CMake就是针对上面问题所设计的工具:它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。显然,CMake 是一个比上述几种 make 更高级的编译配置工具。

    类似Make工具的功能,CMake工具就是“读取”并执行CMakelists.txt文件中的语句,来生成对应的Makefile。然后开发者就可以通过Make工具来“执行”Makefile了。

    在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:

    1. 编写 CMake 配置文件 CMakeLists.txt 。
    2. 执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile 1ccmake 和 cmake 的区别在于前者提供了一个交互式的界面。。其中, PATH 是 CMakeLists.txt 所在的目录。
    3. 使用 make 命令进行编译。

    makefile的目的是为了实现自动编译的目的,会用到make工具去执行makefile上的编译指令。而且不同平台的makefile文件编写规则不一样。

    其实手动编写makefile是一件让人抓狂的事,而且也很愚蠢。

    应该使用cmake工具自动生成makefile。这样的话会编写CMakelists.txt就好了。

    其实这些编译相关的工作现在大多都交给IDE去完成了。作为知识面的扩展和底层原理的理解还是有必要的。

    ======================================================

    IDE的功能:

    代码编辑、分析功能、编译功能、调试功能;

    IDE的优缺点:

    优点
    • 节省时间和精力。IDE的目的就是要让开发更加快捷方便,通过提供工具和各种性能来帮助开发者组织资源,减少失误,提供捷径。
    • 建立统一标准。当一组程序员使用同一个开发环境时,就建立了统一的工作标准,当IDE提供预设的模板,或者不同团队分享代码库时,这一效果就更加明显了。
    • 管理开发工作。首先,IDE提供文档工具,可以自动输入开发者评论,或者迫使开发者在不同区域编写评论。其次,IDE可以展示资源,更便于发现应用所处位置,无需在文件系统里面艰难的搜索。
    缺点
    • 学习曲线问题。IDE基本上是比较复杂的工具,为了更好的熟练使用,需要一定的时间和耐心。
    • 初学者的困难。对初学者来说,使用IDE来学习开发有相当的难度,不适合学习一种新语言时使用。
    • 无法修复坏代码或设计。开发者不能完全依赖工具的便捷,还是必须保持专业水准和熟练度,开发的成果好坏主要还是看开发员的技术。

    =================================================

    参考链接:

    Cmake和makefile:https://blog.csdn.net/qq_28038207/article/details/80791694

    Cmake入门实战:https://www.hahack.com/codes/cmake/

    GCC、Make、CMake、Makefile、CMakelists的关系:https://www.jianshu.com/p/184a33eddf93

  • 相关阅读:
    ubuntu 安装 systemback
    嵌入式gdb远程调试
    pecl 安装 phpredis
    Linux服务器内存池技术是如何实现的
    统一登录的几种常用设计模式
    数据库并发控制
    抽取一部分服务端做BFF(Backend For Frontend服务于前端的后端)
    干货 | 质量保障新手段,携程回归测试平台实践 原创 Sedro 携程技术 2021-01-21
    服务端绘图
    中间件技术在百度云原生测试中的应用实践 原创 路由器 百度智能化测试 今天
  • 原文地址:https://www.cnblogs.com/grooovvve/p/11222098.html
Copyright © 2011-2022 走看看