首页 > 系统相关 >Linux系统编程04-Makefile

Linux系统编程04-Makefile

时间:2022-10-14 22:12:15浏览次数:49  
标签:文件 %. 04 ... CC Makefile 依赖 Linux

  • 文件命名: makefile 或 Makefile

  • 规则:

    • 一个Makefile文件中可以有一个或多个规则

      目标 ...: 依赖 ...

      ​ 命令(shell命令)

      ​ ...

    • 目标: 最终生成的文件

    • 依赖: 生成目标所需要的文件或者目标

    • 命令: 通过执行命令对依赖操作生成目标(命令前必须tab缩进)

  • 命令在执行之前, 需要先检查规则中的依赖是否存在

  • 检测更新, 在执行规则中的命令时, 会比较目标和依赖文件的时间

  • 自定义变量 : 变量名=变量值 var=hello ; 获取变量:$(var)

  • 预定义变量:

    • AR: 归档维护程序的名称, 默认ar
    • CC: C编译器的名称, 默认cc
    • CXX: C++编译器名称, 默认g++
    • $@: 目标的完整名称
    • $<: 第一个依赖文件的名称
    • $^: 所有依赖文件
  • 函数:

    • $(wildcard PATTERN...)
      • 获取指定目录下指定类型的文件列表
      • 参数:PATTERN 指的是某个或多个目录下的对应的某种类型的文件,如果有多个目录,一般使用空格间隔
      • 返回:得到的若干个文件的文件列表,文件名之间使用空格间隔
      • 示例:$(wildcard *.c ./sub/*.c) 返回值格式: a.c b.c c.c d.c e.c f.c
    • $(patsubst <pattern>,<replacement>,<text>)
      • 查找中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式,如果匹配的话,则以替换。
      • 返回:函数返回被替换过后的字符串
      • 示例:$(patsubst %.c, %.o, x.c bar.c) 返回值格式: x.o bar.o

示例:

target = main
src = $(wildcard *.c)
objects = $(patsubst %.c,%.o,$(src))
CC = gcc
CPPFLAGS = -I ./

$(target): $(objects) 
	$(CC) -o $@ $^ 

%.o: %.c
	$(CC) -g -c $< $(CPPFLAGS)

.PHONY: clean
clean: 
	rm -f $(objects) $(target)

标签:文件,%.,04,...,CC,Makefile,依赖,Linux
From: https://www.cnblogs.com/anqwjoe/p/16793181.html

相关文章

  • Linux系统编程07-read和write
    read和write函数#include<unistd.h>ssize_tread(intfd,void*buf,size_tcount);参数:fd:文件描述符,open得到的,用来操作某个文件buf:要读取数据......
  • 704. 二分查找
    题目描述给定一个 n 个元素有序的(升序)整型数组 nums和一个目标值 target ,写一个函数搜索 nums 中的target,如果目标值存在返回下标,否则返回-1。思路分析二分......
  • 《Unix/Linux系统编程》第四章学习笔记 20201209戴骏
    第四章并发编程知识点归纳1、并行计算导论在早期,大多数计算机只有一个处理组件,称为处理器或中央处理器(CPU)。受这种硬件条件的限制,计算机程序通常是为串行计算编写的。......
  • Linux常用命令
    cd:切换目录用法:cd绝对路径切换路径cd相对路径切换路径cd~或者cd回到自己的家目录(root目录)cd-回到上一次所在目录cd..回到当前目录的上一......
  • ALV demo 04:cl_salv_table (ICONs and Tooltips)
    QQ群:SAP干货铺, 群号:775662808干货:​效果图:code:*&---------------------------------------------------------------------**&ReportZLM_ALV003*&*&sapliumeng*&----......
  • Linux自定义别名alias重启失效问题
    linux上的别名功能非常方便:aliaslk='ls-lh'aliasll='ls-il'aliasla='ls-al'电脑重启后失效。解决方式是:vi~/.bashrcaliaslk='ls-lh'aliasll='ls-il'......
  • Scratch 04:小猫来背诗
    上次写了一个最简单的说helloworld,既然helloworld能说,那别的也能说。简单点儿,来背个诗歌?首先打开软件:扩展朗读功能:然后看下朗读里面都有啥:咱们先来最简单的:首先是从事件......
  • win11+wls2+ubuntu2004配置cuda+cudnn+pytorch
    0.前置说明win11系统开启子系统wsl2安装Ubuntu2004版本子系统(2204版本未测试,请自测)1.安装wsl2-Ubuntu2004子系统win11以上默认是wsl2了,win10参考列表第一个子系统......
  • 在 Linux 上学习 C 语言的五种方式
    有许多关于为什么C语言能够经久不衰的说法。或许是因为它语法简单明了。又或许是因为它常被认为是实用的语言,因为它不基于其他高级语言,可以在任何平台上编译运行。C显然......
  • 【Linux 管理】如何将 PCI Bus 地址和物理 PCI 插槽对应
    前言事情是这样的:实验室做机器学习的服务器挂了一张显卡。这台服务器总共有8张RTX2080Ti显卡,现在使用nvidia-smi查看显卡信息,只能检测到七张显卡。查看连接到服务......