Linux C编程之六 makefile项目管理
摘自:https://www.cnblogs.com/xuejiale/p/10788404.html
一、整体大纲

二、makefile的编写
一个规则 两个函数 三个变量
1. 一个规则
三要素:目标, 依赖, 命令
目标:依赖
命令:
第一条规则是用来生成终极目标的规则
a. 如果规则中的依赖不存在, 向下寻找其他的规则
b. 更新机制:比较的是目标文件和依赖文件的时间
2. 两个函数
1) 查找指定目录下, 指定类型的文件
src=$(wildcard ~/aa/*.c)
2)匹配替换函数
obj=$(patsubst %.c, %.o, $(src))
3. 三个自动变量
1)$<:规则中的第一个依赖
2) $^:规则中的所有依赖
3)$@:规则中的目标
只能在规则中的命令中使用
4. 模式规则
%.o:%.c
gcc -c $< -o $@

子目标和终极目标的关系:
更新目标的原则:


三、makefile中变量的使用
makefile编写示例:


app:main.o sub.o mul.o
gcc main.o sub.o mul.o -o app
gcc $^ -o $@ %.o:%.c
gcc -c $< -o $@

makefile中的自动变量:
- $<: 规则中的第一个依赖
- $@: 规则中的目标
- $^: 规则中的所有依赖
只能在规则的命令中使用
Linux C编程之六 makefile项目管理的更多相关文章
- Yuchuan_Linux_C编程之六 Makefile项目管理
一.整体大纲 二.makefile的编写 一个规则 两个函数 三个变量 1. 一个规则 三要素:目标, 依赖, 命令 目标:依赖 命令: 第一条规则是用来生成终 ...
- Linux多任务编程之六:编写多进程程序及其代码(转)
来源:CSDN 作者:王文松 转自Linux公社 ------------------------------------------------------------------------- ...
- storysnail的Linux串口编程笔记
storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...
- 初探linux内核编程,参数传递以及模块间函数调用
一.前言 我们一起从3个小例子来体验一下linux内核编程.如下: 1.内核编程之hello world 2.模块参数传递 3.模块间 ...
- linux网络编程-(socket套接字编程UDP传输)
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...
- Linux网络编程入门 (转载)
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- [转] - Linux网络编程 -- 网络知识介绍
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- 【转】Linux网络编程入门
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- 《转》Linux网络编程入门
原地址:http://www.cnblogs.com/duzouzhe/archive/2009/06/19/1506699.html (一)Linux网络编程--网络知识介绍 Linux网络编程-- ...
- Linux环境编程相关的文章
Linux环境编程相关的文章 好几年没有接触Linux环境下编程了,好多东西都有点生疏了.趁着现在有空打算把相关的一些技能重拾一下,顺手写一些相关的文章加深印象. 因为不是写书,也受到许多外部因素限制 ...
随机推荐
- 8086汇编(16位汇编)学习笔记05.asm基础语法和串操作
https://bpsend.net/thread-121-1-2.html asm基础语法 1. 环境配置 xp环境配置 1.拷贝masm615到指定目录 2.将masm615目录添加进环境变量 3 ...
- L3-1、掌控多轮对话的节奏 -Prompt 结构与上下文管理全攻略
一.多轮对话中的上下文挑战与常见问题 在与大语言模型(LLM)进行多轮对话时,我们常常面临以下挑战: 上下文丢失:模型"遗忘"之前提到的信息 指代不明:难以理解代词指向的内容 话题 ...
- ActiveMQ的安装与部署
ActiveMQ是Apache的一个开源项目,它是一个功能强劲的开源消息总线,也是一个中间件产品,它是JMS的一个实现. 在介绍ActiveMQ之前,先来复习一下J2EE中的JMS规范.JM ...
- 【2020.11.19提高组模拟】倍数区间interval 题解
[2020.11.19提高组模拟]倍数区间interval 题解 题目描述 定义在序列\(a_1,a_2,\dots,a_n\)上的合法区间\([L,R]\)为满足\(\exists k\in [L, ...
- Windows下配置pip指定下载源具体操作步骤
前言 pip官方源有时候较为不稳定,对于国内用户来说,一个好的镜像源能够提高生产力.再加上有的公司和行业较为严格,无法访问互联网,所以通过配置内网的源就变成了必需的技能,本文同样适用于公司内网源的搭建 ...
- mysql安全小结
sql的注入是一个很困扰人的问题,一些恶意攻击者可以利用sql注入来获取甚至是修改数据库中的信息,尤其是一些比较敏感的密码一类的数据. sql注入主要利用mysql 的注释将后续应正常执行的语句注释掉 ...
- Nginx配置HTTPS认证
概述 什么是https? 可以阅读这篇文章:https://www.cnblogs.com/huangSir-devops/p/18806406 在生产环境中,网站的访问一般都是使用https加密的, ...
- vue中使用axios获取到的Promise {<pending>}数据,无法使用的问题
使用axios拿到后端数据后 返回的是 Promise {} 我们可以看到数据是在[[PromiseResult]]这个Object对象中 此时我们是无法获取对象的 解决方法:使用async和awai ...
- 开源直播课丨高效稳定易用的数据集成框架——ChunJun类加载原理与实现
一.直播介绍 前几期,我们为大家分享了ChunJun的数据还原.Hive事务表及传输模块的一些内容,本期我们为大家分享ChunJun类加载原理与实现. 本次直播我们将从Java 类加载器解决类冲突基本 ...
- 长亭雷池WAF(safeline)社区版安装教程
雷池WAF的技术文档,并不包含 Docker 和 Docker Compose V2 安装文档,更新记录一下,共同学习,共同进步 配置需求 操作系统:Linux 指令架构:x86_64 软件依赖:Do ...