make、makefile、cmake之间的区别与联系

2023-05-16

make、makefile、cmake之间的区别与联系

首先说明一下make、makefile、cmake存在的原因

  • 在进行编译时,如果程序只有一个源文件,那么我们可以直接利用gcc命令对其进行编译;
  • 但是,如果程序包含多个源文件的话,用gcc命令对源文件进行逐个编译显然会比较繁琐。尤其是在有大量源文件时,这样繁琐的编译工作很容易会导致混乱;
  • 为了使多个源文件的编译工作更加便捷,就出现了make工具和makefile文件。

什么是make工具?

  • make工具类似于批处理工具,可以对多个源文件进行批量地编译和链接;
  • 但是需要明确的是,make工具本身不具备编译和批处理功能,它是通过调用makefile文件中的命令实现编译和链接。

什么是makefile文件?

  • makefile是一个文本文件,其中包含了make工具在执行时所要遵循的一系列规则;
  • 比如,makefile文件中包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令。

什么是Cmake工具?

  • 在一些简单的工程中,makefile文件完全可以由程序员自己编写;但是当工程非常大时,手写makefile文件肯定不是一个明智的选择;
  • Cmake工具的功能就是用来生成makefile文件,以便make工具进行调用;
  • Cmake工具根据CMakeLists.txt(组态档)文件生成makefile文件;而CMakefile文件是需要程序员自己编写的,或者借助IDE生成;
  • 类似CMake的工具有很多,比如autotools、Qt环境下的qmake等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

make、makefile、cmake之间的区别与联系 的相关文章

随机推荐

  • EasyVim:简单强大的VIM配置

    EasyVim 简单易用的vim配置 xff0c 熟练后可大大提高开发效率 xff08 VS Code的两倍以上 xff09 安装 安装过程需要从github下载很多插件 xff0c 国内尽量挂VPN span class token fu
  • README

    EasyVim 简单易用的vim配置 xff0c 熟练后可大大提高开发效率 xff08 VS Code的两倍以上 xff09 安装 安装过程需要从github下载很多插件 xff0c 国内尽量挂VPN span class token fu
  • C语言static和inline

    C语言static和inline C语言的static和inline的用法看似简单 但有很多坑 xff0c 一些编程老手也会犯错误 xff0c 网上也几乎很少有教程能讲清楚 下面先说结论 xff0c 再进行推导 xff1a 头文件里不能单独
  • STC51单片机学习笔记4——stc12c56 串口

    stc12c56 串口 xff08 没有用独立波特率发生器 xff0c 用T1不分频 中断式接受与发送 xff09 烧写程序时 xff0c 一定要选用外部晶振 xff08 烧写软件默认为内部晶振 xff08 5M 6M xff09 xff0
  • 如何直接使用别人的conda环境(免安装)

    如何直接使用别人的conda环境 xff08 免安装 xff09 1 复制conda文件夹2 修改配置文件3 修改环境路径和包路径4 修改环境路径和包路径 有时候为了更加方便 xff0c 可以直接使用其他用户的环境 xff0c 而不是自己重
  • 元组,字典,列表排序

    经常需要对元组或者字典等序列按照特定的规则进行排序 xff0c 如按照年龄进行排序 gt gt gt student tuples 61 39 john 39 39 A 39 15 39 jane 39 39 B 39 12 39 dave
  • Enable VT-x in your BIOS security settings (refer to documentation for your computer)

    创建一个安卓模拟器的时候无法运行 提示为 Intel HAXM 要求运行AVD 但是VT x 没有被允许 意思就是说主机支持VT x xff0c 但是处于未开启状态 你需要进入BOIS中进行设置 BOIS出现Lenovo时按F2进入 选择S
  • numpy数组的操作取前行和取列

    这个数组跟MATLAB简直不要太像 首先得导包 xff0c from numpy import 如果你要取前几行 a 61 c 0 3 前0 1 2行 b 61 c 0 2 4 第0行的第2和第3列不包括第4列 xff0c 因为列下标也是从
  • CMake官方教程

    很好的一个官方教程翻译文档 CMake简介 CMake是一个跨平台的 开源的构建工具 cmake是makefile的上层工具 xff0c 它们的目的正是为了产生可移植的makefile xff0c 并简化自己动手写makefile时的巨大工
  • TeamTalk HttpParser详解

    1 简介 TeamTalk http解析实际上是利用了ngnix的http parse解析库 2 HTTP简介 请求报文 参考图解HTTP 上野宣 响应报文 参考图解HTTP 上野宣 URI格式 参考图解HTTP 上野宣 3 ngnix h
  • MATLAB随机生成大小也是随机的矩形(地形图一)

    有一个需求需要要生成地貌一样的随机地形图 xff0c 首先我通过在固定大小的矩形面板上生成多个大小不一的矩形 xff0c 然后赋予每个矩形随机的高度 xff0c 然后再进行滤波得到想要的地形图 先直接贴一段代码 xff0c 看看是如何在面板
  • nvidia-smi:command not found 问题解决,Failed to initialize NVML: Driver/library version mismatch

    在装驱动之后 发现nvidia smi不能用了 于是在网上找到了解决方案 简单来看 xff0c 就两步 1 unload nvidia kernel mod 2 reload nvidia kernel mod 执行起来就是 1 sudo
  • 基于OpenCV的双目深度估计实现与改进

    双目深度估计 一 传统方法 常用的方法有SAD匹配算法 xff0c BM算法 xff0c SGBM算法 xff0c GC算法 1 1 SAD算法 SAD Sum of absolute differences 是一种图像匹配算法 xff0c
  • Libstdc++.so.6: version `GLIBCXX_3.4.22’ not found(conda)

    error Libstdc 43 43 so 6 version 96 GLIBCXX 3 4 22 not found fix 在conda环境下 xff0c 由于安装了某些模块 xff0c 使得模块的版本不一样 其中libstdc 43
  • pytoch报错OSError: [Errno 24] Too many open files

    因为默认的file descriptor共享策略使用文件描述符作为共享内存句柄 xff0c 并且当DataLoader上有太多批次时 xff0c 这将达到限制 要解决此问题 xff0c 您可以通过将其添加到脚本来切换到file system
  • MXNet的gluon转symbol并保存

    from mxnet gluon model zoo import vision import mxnet as mx import numpy as np mobilenetv205 61 vision get model 39 mobi
  • 激光雷达技术路线:机械式、MEMS是主流,OPA、Flash、FMCW发展空间大

    激光雷达是通过发射激光束来探测物体与传感器之间精准距离的主动测量装置 xff0c 包含发射单元 接收单元 扫描单元以及数据处理单元 激光雷达通过激光器和探测器组成的收发阵列 xff0c 结合光束扫描 xff0c 可以对广义机器人所处环境进行
  • C++ 错误解决 —— internal compiler error

    问题 xff1a g 43 43 编译时 xff0c 报错 xff1a g 43 43 internal compiler error Killed program cc1plus 出错原因 xff1a 出错的原因是 xff08 虚拟机 x
  • 基于STC89C52的智能小车——红外避障篇

    做这个小车真是历尽波折 因为我的零件是散买的 xff0c 所以在组装时出了各种幺蛾子 先是装马达的时候发现螺丝买短了 xff0c 之后又是单片机最小单元装不到小车底板上 千辛万苦把小车组装好了 xff0c 终于可以开心 xff08 并不 x
  • make、makefile、cmake之间的区别与联系

    make makefile cmake之间的区别与联系 首先说明一下make makefile cmake存在的原因 在进行编译时 xff0c 如果程序只有一个源文件 xff0c 那么我们可以直接利用gcc命令对其进行编译 xff1b 但是