Linux 中 m、mm、mmm 函数和 make 的区别
在 Linux 内核开发和 Android 开发中,构建系统通常使用 make
命令来编译和构建项目。而在 Android 开发环境中,还有 m
、mm
和 mmm
等命令,这些命令是 Android 构建系统的一部分,提供了更高效和便捷的构建方式。以下将详细介绍这些命令的功能、使用场景和区别。
一、make
命令
概述
make
是一个构建自动化工具,通过读取名为 Makefile
的文件来执行编译和构建任务。Makefile
中定义了编译规则、依赖关系和构建步骤。
使用场景
- 编译整个项目:
make
命令通常用于编译整个项目。 - 增量编译:
make
只编译发生变化的文件,节省编译时间。 - 执行自定义任务:通过在
Makefile
中定义自定义任务,make
可以执行多种构建和自动化任务。
示例
make
make clean
make install
二、m
、mm
和 mmm
命令
概述
m
、mm
和 mmm
是 Android 构建系统中的命令,用于简化 Android 项目的编译过程。这些命令是 Android 源代码树中的脚本,帮助开发者在不同级别上进行构建。
1. m
命令
功能
m
命令在 Android 源代码的根目录中使用,用于编译整个 Android 系统。
使用场景
- 编译整个 Android 系统:在源码根目录中运行
m
命令来编译整个 Android 系统,包括所有的子项目和模块。
示例
m
2. mm
命令
功能
mm
命令在模块目录中使用,用于编译当前目录下的所有模块。
使用场景
- 编译当前目录的模块:在具体模块的目录中运行
mm
命令,只编译当前目录下的模块,适合单个模块的开发和调试。
示例
cd packages/apps/Settings
mm
3. mmm
命令
功能
mmm
命令可以在任意位置使用,用于编译指定路径下的模块。
使用场景
- 编译指定路径的模块:可以在 Android 源代码树中的任何位置运行
mmm
命令,编译一个或多个指定路径下的模块。
示例
mmm packages/apps/Settings
三、区别和对比
1. 使用范围
make
:适用于各种项目的构建,包括但不限于 Linux 内核和应用程序。make
是一个通用的构建工具,通过Makefile
控制构建流程。m
、mm
、mmm
:专用于 Android 源代码树中的构建。m
编译整个 Android 系统,mm
编译当前目录下的模块,mmm
编译指定路径下的模块。
2. 编译粒度
make
:可以根据Makefile
中定义的规则,灵活地编译整个项目或特定的目标。m
:编译整个 Android 系统,适合全量构建。mm
:编译当前目录下的模块,适合单个模块的开发和调试。mmm
:编译指定路径下的模块,适合同时编译多个不同路径下的模块。
3. 依赖管理
make
:依赖关系通过Makefile
定义,手动管理,适用于各种编程语言和项目。m
、mm
、mmm
:依赖关系由 Android 构建系统自动管理,简化了 Android 项目的依赖管理。
四、总结
使用建议
- 使用
make
:适用于需要自定义构建流程的项目,特别是在非 Android 项目中。 - 使用
m
、mm
、mmm
:适用于 Android 开发,利用其自动化构建和依赖管理功能,提高开发效率。
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
相关文章:
Linux 中 m、mm、mmm 函数和 make 的区别
在 Linux 内核开发和 Android 开发中,构建系统通常使用 make 命令来编译和构建项目。而在 Android 开发环境中,还有 m、mm 和 mmm 等命令,这些命令是 Android 构建系统的一部分,提供了更高效和便捷的构建方式。以下将详细介绍这些…...
【MAC】YOLOv8/11/12 转换为 CoreML 格式并实现实时目标检测
在本文中,我们将详细介绍如何将 YOLOv8/11/12 模型转换为 CoreML 格式,并使用该模型在摄像头实时检测中进行目标检测。主要适用于M1、M2、M3、M4芯片的产品。 以下教程在YOLOv8/11/12均适用,此处就以 YOLOv11 举例 目录 前提条件YOLOv8/11/12 转换为 CoreML实时目标检测结论…...
NodeJS全栈WEB3面试题——P7工具链 测试
📊 7.1 Truffle vs Hardhat:各自的优势? 项目TruffleHardhat📦 成熟度老牌框架,社区大,文档全面新一代框架,现代化设计🧪 测试支持内置 Mocha 测试框架支持 Mocha Chai,…...
Mybatis框架各配置文件主要内容详解(二)
ResultMap解决了数据库字段与实体类之间不一致导致的问题 <!--resultMap:设置自定义映射属性:id:表示自定义映射的唯一标识type:查询的数据要映射的实体类的类型子标签:id:设置主键的映射关系result&…...

【优选算法 | 队列 BFS】构建搜索流程的核心思维
算法相关知识点可以通过点击以下链接进行学习一起加油!双指针滑动窗口二分查找前缀和位运算模拟链表哈希表字符串模拟栈模拟(非单调栈)优先级队列 很多人学 BFS 的时候都知道“用队列”,但为什么一定是队列?它到底在整个搜索流程中起了什么作…...
virtio介绍 (三)--spdk作为virtio后端处理nvme盘io的流程--上
目录 一 简介 二 vhost-blk层 三 bdev层 四 lvol层 五 bdev_nvme层 六 硬件驱动层 七 完整取io调用栈流程 一 简介 上节介绍了virito的基本原理,后面根据实际代码介绍virtio的流程。virtio后端代码相对于前端代码更简单,我们先以spdk中的virtio后…...
关于BackgroundScheduler的pause
在APScheduler中,pausedTrue参数的作用对象取决于其使用场景: 1. 作用于调度器(Scheduler) 当在start()方法中使用时(如 scheduler.start(pausedTrue)) 表示调度器本身启动后立即进入暂停状态&…...

设计模式(行为型)-中介者模式
目录 定义 类图结构展示 角色职责详解 模式的优缺点分析 优点 缺点 适用场景 应用实例 与其他模式的结合与拓展 总结 定义 中介者模式的核心思想可以概括为:用一个中介对象来封装一系列的对象交互。这个中介者就像一个通信枢纽,使各对象不需要…...

【Java学习笔记】异常
异常(Exception) 一、基本介绍 在 Java 程序中,将运行中发生的不正常情况称为 “异常”,开发过程中的语法错误和运行时发生的异常情况是不一样的。 二、异常的分类 1. Error(错误):Java 虚拟…...

MySQL:视图+用户管理+访问+连接池原理
一、视图 视图是一个虚拟表,其内容由查询定义。同真实的表一样(相当于是把查询的内容当成一个临时表来使用),视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。 1.1 为…...

neo4j 5.19.0安装、apoc csv导入导出 及相关问题处理
前言 突然有需求需要用apoc 导入 低版本的图谱数据,网上资料又比较少,所以就看官网资料并处理了apoc 导入的一些问题。 相关地址 apoc 官方安装网址 apoc 官方导出csv 教程地址 apoc 官方 导入 csv 地址 docker 安装 执行如下命令启动镜像 doc…...
C/C++ OpenCV 矩阵运算
C/C OpenCV 矩阵运算详解 💡 OpenCV 是一个强大的开源计算机视觉和机器学习库,它提供了丰富的矩阵运算功能,这对于图像处理和计算机视觉算法至关重要。本文将详细介绍如何使用 C/C 和 OpenCV 进行常见的矩阵运算。 矩阵的创建与初始化 在进…...

无人机桥梁3D建模的拍摄频率
无人机桥梁3D建模的拍摄频率 无人机桥梁3D建模的拍摄频率(每秒拍摄照片数)需根据建模精度、飞行速度、相机性能等因素综合确定。以下是专业级作业的详细参数分析: 1. 核心计算公式 拍摄频率(fps) \frac{飞行速度&…...

ESP32-idf学习(三)esp32C3连接iot
一、前言 上一篇用蓝牙作为通信方式,虽然勉强完成了控制,但结果显然不是那么符合我们的预期,既然用蓝牙还需要研究一段时间,那我们就先整一些现成的,不需要研究的!iot云平台!这里当然也是通过w…...

详解鸿蒙仓颉开发语言中的计时器
今天又到了大家喜闻乐见的科普环节,也可以说是踩坑环节,哈哈哈。今天聊一聊仓颉开发语言中的计时器,这部分可老有意思了。 为什么这么说呢,因为关于仓颉的计时器你几乎搜不到任何的文档,也没有相关的代码提示…...

【计算机网络】第3章:传输层—拥塞控制原理
目录 一、PPT 二、总结 (一)拥塞的定义 (二)拥塞产生的原因 (三)拥塞控制的目标 (四)拥塞控制方法分类 1. 端到端拥塞控制 2. 网络辅助拥塞控制 (五)…...

Vue3(watch,watchEffect,标签中ref的使用,TS,props,生命周期)
Vue3(watch,watchEffect,标签中ref的使用,TS,props,生命周期) watch监视 情况三:监视reactive定义的对象类型的数据 监视reactive定义的对象类型的数据,默认开启深度监视。地址没变,新值和旧…...

【nssctf第三题】[NSSCTF 2022 Spring Recruit]easy C
这是题目,下载附件打开是个C文件 #include <stdio.h> #include <string.h>int main(){char a[]"wwwwwww";char b[]"dvxbQd";//try to find out the flagprintf("please input flag:");scanf(" %s",&a);if…...
Cocos 打包 APK 兼容环境表(Android API Level 10~15)
使用 Cocos 打包 APK:Android 10 ~ Android 15 兼容版本对照表 ✅ 本表基于 Cocos Creator 3.x 实际测试及官方建议整理 📆 最后更新时间:2025年6月 💡 推荐使用 Android Studio 2022 或命令行构建工具 Android 版本API Level推荐…...
数据结构之堆:解析与应用
一、堆的核心定义与性质 堆是一种特殊的完全二叉树,分为最大堆和最小堆: 最大堆:每个节点的值 ≥ 子节点值,根节点为最大值。最小堆:每个节点的值 ≤ 子节点值,根节点为最小值。 关键性质: …...

DBeaver导入/导出数据库时报错解决方案
导出: 报错:mysqldump: Got error: 2026: SSL connection error: error:0A000102:SSL routines::unsupported protocol when trying to connect 在额外的命令参数中添加"--ssl-modeDISABLED"可以关闭SSL服务,从而成功解决问题。这…...
GPIO模拟串口通信
在资源受限的嵌入式项目中,GPIO模拟串口(UART)仍有实际需求。尽管现代MCU多数具备多个硬件串口,但实际项目中仍可能遇到串口数量不足的情况,尤其在低成本、小封装芯片的应用场景中。 一、GPIO模拟串口的基本原理 GPIO模拟串口,顾名思义,就是通过软件控制普通IO口的高低…...

uniapp与微信小程序开发平台联调无法打开IDE
经测试属于网络问题。本机需要联网。否则会出现Hbuilder运行微信小程序到模拟器时无法打开 微信开发者工具 这个页面出不来会一直显示异常。这期间微信小程序开发工具的端口是通的 需要先联网...

第十二节:第五部分:集合框架:Set集合的特点、底层原理、哈希表、去重复原理
Set系列集合特点 哈希值 HashSet集合的底层原理 HashSet集合去重复 代码 代码一:整体了解一下Set系列集合的特点 package com.itheima.day20_Collection_set;import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.…...

【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器
🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 🔥 前言 一:🔥 项目储备知识 🦋 HTTP 服务器🦋 Reactor 模型🎀 单 Reactor 单线程:单I/O多路…...

基于大数据的个性化购房推荐系统设计与实现(源码+定制+开发)面向房产电商的智能购房推荐与数据可视化系统 基于Spark与Hive的房源数据挖掘与推荐系统设计
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

FFmpeg学习笔记
1. 播放器的架构 2. 播放器的渲染流程 3. ffmpeg下载与安装 3.0 查看PC是否已经安装了ffmpeg ffmpeg 3.1 下载 wget https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz 3.2 解压 tar zxvf ffmpeg-7.0.tar.gz && cd ./ffmpeg-7.0 3.3 查看配置文件 ./configure …...

Chrome 通过FTP,HTTP 调用 Everything 浏览和搜索本地文件系统
【提问1】 Chrome调用本地 everything.exe, everything 好像有本地 FTP 服务器? 【DeepSeek R1 回答】 是的,Everything 确实内置了 HTTP/FTP 服务器功能,这提供了一种相对安全的浏览器与本地应用交互的方式。以下是完整的实现方案&#x…...

GpuGeek如何成为AI基础设施市场的中坚力量
AI时代,算力基础设施已成为支撑技术创新和产业升级的关键要素。作为国内专注服务算法工程师群体的智算平台,GpuGeek通过持续创新的服务模式、精准的市场定位和系统化的生态建设,正快速成长为AI基础设施领域的中坚力量。本文将深入分析GpuGeek…...

【Hot 100】45. 跳跃游戏 II
目录 引言跳跃游戏 IIdp解题贪心解题 🙋♂️ 作者:海码007📜 专栏:算法专栏💥 标题:【Hot 100】45. 跳跃游戏 II❣️ 寄语:书到用时方恨少,事非经过不知难! 引言 跳跃…...