makefile和cmake

2023-05-16

目录

  • 作用
  • 优点
  • cmake

作用

makefile关系到了整个工程的编译规则。一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

优点

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

cmake

make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令。

常见的make工具,例如GNU Make,QT的qmake,微软的MS nmake,BSD Make(pmake),Makepp…这些 make工具遵循着不同的规范和标准,所执行的makefile格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的make工具,就得为每一种标准写一次makefile,这将是一件让人抓狂的工作。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

makefile和cmake 的相关文章

随机推荐

  • Android三种方式截取任意界面屏幕

    一 使用MediaProjectionManager Android5 0之后 xff0c 开放截取屏幕的API xff0c 也就是利用MediaProjectionManager创建VirtualDisplay xff0c 传入与Imag
  • ijkplayer基于rtsp直播延时的深度优化

    现在ijkPlayer是许多播放器 直播平台的首选 xff0c 相信很多开发者都接触过ijkPlayer xff0c 无论是Android工程师还是iOS工程师 我曾经在Github上的ijkPlayer开源项目上提问过 xff1a 视频流
  • C++ 程序编译过程

    前言 C语言的编译链接过程要把我们编写的一个c程序 xff08 源代码 xff09 转换成可以在硬件上运行的程序 xff08 可执行代码 xff09 xff0c 需要进行编译和链接 编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程
  • 自旋锁实现机理 spin_lock

    自旋锁的概念 自旋锁 xff08 spin lock xff09 是一种典型的对临界资源进行互斥访问的手段 xff0c 它是基于系统原子操作为基础 xff0c 自旋锁最多只能被一个可执行线程持有 xff0c 如果一个执行线程试图获得一个被已
  • 数据结构:图之DFS与BFS的复杂度分析

    BFS的复杂度分析 BFS是一种借用队列来存储的过程 xff0c 分层查找 xff0c 优先考虑距离出发点近的点 无论是在邻接表还是邻接矩阵中存储 xff0c 都需要借助一个辅助队列 xff0c v个顶点均需入队 xff0c 最坏的情况下
  • python中的os.path.dirname(__file__)的使用

    os path dirname file 返回脚本的路径 xff0c 但是需要注意一下几点 1 必须是实际存在的 py文件 xff0c 如果在命令行执行 xff0c 则会引发异常NameError name 39 file 39 is no
  • 北斗模块学习之初

    BD定义 xff1a 北斗卫星导航系统 xff08 BeiDou xff08 COMPASS xff09 NavigationSatellite System xff09 是中国正在实施的自主发展 独立运行的全球卫星导航系统 系统建设目标是
  • 关于Boost库和STL标准模板库

    一 关于STL 首先 xff0c 关于stl xff0c 最近也看了不少关于stl的博客 往大概的讲 xff0c stl即一种标准的模板库 xff0c 同时 xff0c 它也是静态库 xff0c 它存在的目的即是为了实现代码的服用性 xff
  • c语言char* 转char[]方法

    vector lt char gt splite by delim char host name char a 1000 strcpy a host name char p 61 strtok a split vector lt char
  • STL常用容器对比

    STL的常用容器大致有以下8个 xff1a 1 vector vector是一种动态数组 xff0c 在内存中具有连续的存储空间 xff0c 支持快速随机访问 由于具有连续的存储空间 xff0c 所以在插入和删除操作方面 xff0c 效率比
  • C 语言 stm32 无符号8位转换为int类型 uchar 转换为 int

    我做的是一个无线鼠标 xff0c stm32用nRF24L01无线传输模块发送数据时 xff0c 是传输无符号8位 uchar 三个数据是角度值 xff0c 有正负 直接使用无符号数据的话负数会出错 xff0c 在接收端要把数据恢复为整数
  • 常见IMU的性能比较

    型号gyr零偏稳定性gyr量程acc零偏稳定性acc量程HZ价格其他说明 EG320N xff08 epson xff09 http www canalgeomatics com wp content uploads 2020 06 oem
  • strcat函数用法的一点看法

    最近在刷题时碰到了strcat这个函数 xff0c 一开始没怎么理解它的用法 xff0c 出了错 xff0c 现在写点自己的理解吧 首先来看两个小程序 代码一 xff1a include lt iostream gt using names
  • CMake教程——QT项目使用CMake

    文章目录 1 Basic Cmake Based Project2 Executable VS Library3 Every module has its own CMakeList txt in its folder3 1 不推荐的做法
  • Proteus ISIS仿真软件中英文元件名称对照

    定时 计数器的使用方法 xff1a CLK xff1a 计数和测频状态时 xff0c 数字波的输入端 xff08 counter enable CE xff1a 计数使能端 xff1b 通过属性设置高还是低有效 无效暂停计数 RST 复位端
  • STL详解

    STL简介 编程的抽象发展 xff1a 面向过程 to 基于对象 to
  • 双目立体视觉 I:标定和校正

    点击上方 AI公园 xff0c 关注公众号 xff0c 选择加 星标 或 置顶 作者 xff1a Ali Yasin Eser 编译 xff1a ronghuaiyang 导读 双目立体校正和标定 大家好 xff01 今天我们将讨论什么是立
  • 4_竞赛无人机基本自动飞行支持函数与导航控制函数解析——零基础学习竞赛无人机搭积木式编程

    竞赛无人机基本自动飞行支持函数与导航控制函数解析 基本自动飞行支持函数 void basic auto flight support void 根据前面几讲的介绍 xff0c 要想实现无人机的自动飞行 xff0c 单依靠姿态自稳 高度控制远
  • Ubuntu20.04/Ubuntu22.04 配置VScode+Opencv+cmake(C++)

    下面介绍Ubuntu20 04下安装opencv xff0c 当然Ubuntu22 04也适用 xff0c 然后将opencv链接到VsCode 先主体按照 gt 点我 xff1a 链接1 lt 的第一点进行安装 xff0c 但是特别注意
  • makefile和cmake

    目录 作用优点cmake 作用 makefile关系到了整个工程的编译规则 一个工程中的源文件不计其数 xff0c 其按类型 功能 模块分别放在若干个目录中 xff0c makefile定义了一系列的规则来指定 xff0c 哪些文件需要先编