编写包含多文件的Makefile以及Makefile的嵌套实验

Makefile命令参数、调用其他Makefile、嵌套 介绍make运行参数和调用其他makefile 阅读详情

转载出处:http://blog.youkuaiyun.com/zplove003/article/details/7066595

(1)创建目录结构

(2)输入"tree"命令,查看目录;若没有则安装tree命令 (sudo apt-get install tree )


  1. //f1.c  
  2.   
  3. #include "../include/myinclude.h"                                                                              
  4. void print1()  
  5. {  
  6.     printf("Message f1.c\n");  
  7.     return;  
  8. }  

  1. //Makefile (/f1目录下的)  
  2.   
  3. ../$(OBJS_DIR)/f1.o:f1.c                                                                                       
  4.     $(CC) -c $^ -o $@  
f2.c 和f2目录下的Makefle和f1目录下的除名字外内容相同
  1. //main.c   
  2.   
  3. #include <stdio.h>                                                                                             
  4. int main()  
  5. {  
  6.     print1();  
  7.     print2();  
  8.   
  9.     return 0;  
  10. }  
  1. //Makefile (/man目录下的Makefile)  
  2.   
  3. ../$(OBJS_DIR)/main.o:main.c                                                                                   
  4.     $(CC) -c $^ -o $@  

  1. //顶层目录下的Makeflie文件  
  2. cc=gcc                                                                                                         
  3. SUBDIRS=f1 \  
  4.         f2 \  
  5.         main \  
  6.         obj  
  7. OBJS=f1.o f2.o main.o  
  8. BIN=myapp  
  9. OBJS_DIR=obj  
  10. BIN_DIR=bin  
  11. export CC OBJS BIN OBJS_DIR BIN_DIR  
  12.   
  13. all:CHECK_DIR $(SUBDIRS)  
  14. CHECK_DIR:  
  15.     mkdir -p $(BIN_DIR)  
  16. $(SUBDIRS):ECHO  
  17.     make -C $@  
  18. ECHO:  
  19.     @echo $(SUBDIRS)  
  20.     @echo begin compile  
  21. CLEAN:  
  22.     @$(RM) $(OBJS_DIR)/*.o  
  23.     @rm -rf $(BIN_DIR)  
  1. //Obj目录下的Makefile  
  2.   
  3. ../$(BIN_DIR)/$(BIN):$(OBJS)                                                                                   
  4.     $(CC) -o $@ $^  
  1. include目录下的myinclude.h 文件  
  2. #include <stdio.h>   
显示效果:


3.3 Makefile的嵌套包含 下面是一个示例Makefile和sub.mk的内容。在这个例子中,我们使用了include指令将sub.mk文件包含到Makefile中。sub.mk定义了一个变量VAR,并具有一个名为say_hello的目标,该目标会输出VAR的值。Makefile中的all目标依赖于say_hello目标,并且在执行时会输出"Hello from Makefile"。当我们运行make命令时,它会读取Makefile并暂停读取,然后读取sub.mk文件的内容。完成后,它会继续读取Makefile,找到all。 阅读详情

相关推荐

多文件编译(Makefile)

(5)编写总控Makefile,先执行src中的Makefile(make -C src),再执行obj中的Makefile(make -C obj)链接:gcc test.o -o test (与其它的机器代码文件和库文件汇集生成一个可执行文件)(3)编写src中的Makefile,将所有的.c文件编译生成.o文件,并移动到obj中。include(.h文件)、src(*.c文件)、obj(*.o文件)、bin(可执行文件)(1)目标文件1和目标文件2没有联系时,默认执行性目标文件1。

m0_63866795的博客 2419

多目录、多文件的Makefile的编写

makefile多目录设计

qq_30247635的博客 5124

makefile 多级目录 嵌套调用 实例

最近要搞linux 下 c++ 开发,花了几天时间学习了一下 makefile. 总结了一点自己平时会用的比较多的东西。首先是多目录下嵌套调用 makefile. 我觉得这个很重要。很多时候自己写测试代码或者做一些预研的时候都要用到。 我这个演示例子采用了一个平时我用的比较多的目录结构,相信大家应该也常会用到于此类似得目录结构。今天写这篇文章希望能对正在查相关资料的同行有所帮助。我保证这篇文章里的所有代码都经过充分测试。 首先贴目录结构图: ...

kalinkav的博客 2838

Makefile 工程管理器

Makefile 工程管理器

m0_64562382的博客 1077

从拆箱到跑通:Intel RealSense D435i开箱实测+ROS驱动配置全流程

本文详细记录了Intel RealSense D435i深度相机的开箱体验,并提供了在Ubuntu 22.04与ROS2 Humble环境下,从安装librealsense2 SDK到配置ROS2驱动的完整流程。重点解决了驱动安装、数据流发布、点云对齐以及IMU数据融合等关键步骤,帮助研究者和开发者快速实现D435i与机器人系统的集成。

weixin_29168393的博客 304

基于ESP32-C3的便携式血氧仪硬件与算法实现

血氧饱和度(SpO₂)监测是生理参数无创检测的核心技术之一,其原理基于光电容积脉搏波(PPG)信号中红光与红外光吸收比值的动态变化。该技术依赖高精度模拟前端、稳定光学激励及实时数字信号处理能力,在消费级健康设备中面临功耗、体积与测量鲁棒性的多重约束。ESP32-C3凭借集成LEDC、12位ADC与低功耗双核架构,成为PPG终端的理想主控平台;结合定制化指夹式光学探头与比率法血氧算法,可实现非诊断级但趋势可靠的日常健康监测。本文围绕硬件电路设计、电源管理策略与嵌入式信号处理流程展开,覆盖从LED驱动、跨阻放大

weixin_29025501的博客 132

多文件目录下makefile文件递归执行编译所有c文件

首先说说本次嵌套执行makefile文件的目的:只需make根目录下的makefile文件,即可编译所有c文件,包括子目录下的。 意义:自动化编译行为,以后编译自己的c文件时可把这些makefile文件直接复制到相应目录即可方便编译出所有文件。这些makefile文件是通用的,只需根据自己的工程情况改动少许内容即可。下面会说。 总体思路是:把目标文件放在debug文件夹下的obj目录...

aoyuan4706的博客 1026

Workbench下列车转向架随机振动疲劳分析

结果中添加功率谱响应工具(Response PSD Tool),可以查看几何体以及远程点上的功率谱密度,如下图11所示,这里查看几何体上某一硬点的加速度功率谱密度响应曲线,如下图12所示。结果中添加疲劳工具(Fatigue Tool),查看列车转向架的疲劳寿命情况,这里采用窄带的寿命假设理论,曝光时间为1s指明计算出的疲劳寿命的基本单位是秒,寿命结果如下图14所示,可以看到最大寿命为1e35s,最小寿命为2.3542e18s,注意单位制,可再次基础上将其转换为小时或天。频域上的统计计算,软件很快计算完成。

ansysxuexizhe的博客 2603

makefile工具的使用,编写一个或多个文件!(简单易上手)

makefile工具的使用,编写一个或多个文件!(简单易上手)

wihkum 1938

如何解决ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.

解决ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE

2742

基于Stigmergy的团队LLM wiki协作机制与FastAPI工程实践

大语言模型驱动的知识管理正在改变个人笔记与团队文档的维护方式,但当多人共同维护一个维基时,如何避免版本覆盖、上下文丢失和幻觉污染成为核心挑战。Stigmergy这一源自生物学的协作机制提供了新思路:通过共享环境中的痕迹(如评论、标记、修订历史)实现异步协作,无需实时沟通或中心协调者。本文将原理落地为可工程化的系统,设计Page、Revision、Trace三大实体,并结合向量索引与LLM审查流程,最终用FastAPI与SQLite搭建一个最小可运行原型。从白蚁筑巢到团队知识库,Stigmergy让每个参与者

weixin_34174322的博客 364

Linux实验---多文件编程Makefile实验二

多文件编程Makefile实验指导书一 实验题目:二 实验目的三 实验内容四 实验步骤五 实验结果六、总结 一 实验题目: 多文件编程Makefile 二 实验目的 (1) 熟悉Linux开发环境 (2) 学习嵌入式开发的基本过程 (3) 了解Makefile的基本内容 (4) 通过对包含多文件的Makefile的编写,熟悉各种形式的Makefile,并且进一步加深对Makefile中用户自定义变量、自动变量及预定义变量的理解。 三 实验内容 1、完成一个简单程序的编译过程 2、实现编写多文件编程的make

BBA_Code的博客 5937

【深度学习新浪潮】Score Matching(分数匹配):原理、推导与PyTorch实战

在概率模型训练中,配分函数(归一化常数)是绕不开的难题——尤其是能量模型(EBM)、扩散模型等未归一化模型,直接计算配分函数几乎不可能。Score Matching(分数匹配)作为一种无归一化的参数估计方法,通过拟合概率密度的对数梯度(分数函数),彻底避开了配分函数的计算,成为生成建模、密度估计的核心技术之一。本文将从基础概念出发,逐步推导Score Matching的核心公式,并结合PyTorch实现一个可直接运行的实战案例,帮你彻底理解这一关键技术。Score Matching的核心是。

专注:太空算力、AI infra、异构调度、大模型成本工程 250

Linux虚拟机下makefile的编写应用

目的: 1. 熟悉嵌入式 Linux 开发基本过程及基本命令。 2. 了解嵌入式 Linux 开发中各种工具的基本用途。 3. 搭建好嵌入式 Linux 的开发环境。 4. 通过对包含多文件的 Makefile 的编写,熟悉各种形式的Makefile 编写,加深对 Makefile 中用户自定义变量、自动变量及预定义变量的理解。 实验原理及基本技术路线图 1. Makefile 基本规...

苦作舟的空城机 6040

使用LabVIEW创建和分析柱状图:从基础绘制到高级数据分析的完整指南

LabVIEW,全称为Laboratory Virtual Instrument Engineering Workbench,是由美国国家仪器公司(National Instruments, NI)开发的一款图形化编程语言。自1986年首次推出以来,LabVIEW凭借其强大的数据采集、分析和控制能力,在工程、科研、教育等领域得到了广泛应用。与传统的文本编程语言不同,LabVIEW采用了图形化编程方式,用户通过连接不同的函数节点来实现复杂的逻辑和算法。

qq_38334677的博客 775

Dify智能体开发:发布嵌入网站

Dify 支持将你的 AI 应用嵌入到业务网站中,你可以使用该能力在几分钟内制作具有业务数据的官网 AI 客服、业务知识问答等应用。点击 WebApp 卡片上的嵌入按钮,复制嵌入代码,粘贴到你网站的目标位置。

王国平的博客 3243

linux--多目录下的MakeFile文件(嵌套Makefile)编写

linux--多目录下的makefile文件编写1 简介2 步骤3 示例3.1 文件根目录下的文件3.2 这个是工程中除了include,lib外的目录结构3.3 根目录下的makefile文件3.4 OBJ文件中的makefile3.5 CPE_54_08文件目录下的makefile3.6 Business文件下的makefile3.7 MXDatabase文件下的makefile3.8 Soc...

天道酬勤 8436

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Makefile嵌套编译多文件项目

在多文件的项目中,一个工程中的源文件比较多,其按类型、功能、模块分别放在若干个目录中,为了项目更加规整,我们常常要将源文件头文件执行文件等分开,所以在编译Makefile时就要做好整个项目的编译准备工作,Makefile定义了一系列的规则来指定,哪些文件需要编译,需要生成什么目标,需要生成库等等。 下面就用实例来列出这些规则,这也是一个基本框架,后边如果需要添加更多的源文件和目录就可以如法炮制,这就可以作为一个较为通

leumber的专栏 4817

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

简单的实例,多层嵌套Makefile(一)

参考了网上的博客,自己整理了一份并且可以编译通过,也能够正常执行,所以就做了记录。 防止过段时间就又忘记了。 首先先上个还没执行make前的源码树: 源文件都是一个printf 没什么好讲的,主要是makefile。 首先是顶层Makefile的内容; 第1行:设置编译器 第2行:设置所有会生成的目标文件,为了最后一步连接成可执行文件。

sinat_29830917的博客 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

25.嵌套Makefile的编写与多模块项目构建实践

本次实验掌握了嵌套Makefile的核心设计模式:主Makefile负责全局调度(子模块编译、整体链接、统一清理),子模块Makefile负责各自模块的独立编译,实现了“分层管理、模块解耦”的工程化思路。是嵌套Makefile的核心指令,可指定子目录执行Makefile;通过?定义子模块变量,既能保留子模块默认值,又能被主Makefile的全局变量覆盖,实现参数统一管控。跨模块依赖需在子模块Makefile中显式声明(如core模块依赖utils头文件),确保修改依赖文件时触发增量编译;

知识共享、互助共进 810

Linux环境下多文件工程的2种方法(makefile 的几种写法)

对于多文件工程,可以有两种方法编译:1 手动编译每个工程文件,然后生成最后的可执行文件。 2 编写Makefile文件(几种方法) 工程例子:创建一个目录为GCC,该目录下创建一个main.c文件和两个文件夹分别是add和sub。add目录下创建add.c和add....

qq_30592303的博客 1187
上一篇: 报名
下一篇: C++ Jsoncpp源代码编译与解析Json
asure__cpp
博客等级 码龄14年 8粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值