美文网首页
Makefile简笔记

Makefile简笔记

作者: 大亮x | 来源:发表于2020-06-27 16:29 被阅读0次

一、Makefile 变量


#Makefile变量的使用

objects = main.o input.o calcu.o

main: $(objects)

gcc -o main $(objects)

二、符号介绍

1、“@”


#Make 在执行的过程中会自动输出命令执行过程,在命令前面加上“@”的话就不会输出命令执行过程,

name = daliang

print:

    @echo myID: $(name)

输出结果:

myID: daliang

2、“=”、“:=”、“?=”、“+=”


“=” :赋给最终的变量值,如:

name = DL

curname = $(name)

name = dalaing

print:

    @echo myID: $(curname)

输出结果:

myID: daliang  而不是 myID: DL  !!!

“:=”:赋给现有变量的值,如:

name = DL

curname := $(name)

name = dalaing

print:

    @echo myID: $(curname)

输出结果:

myID: DL    !!!

"?=":是否已被赋值,如果没有就进行赋值

name ?= Daliang

#是否name已被赋值,如果没有就赋值为Daliang

“+=”:变量追加

objects = main.o inpiut.o

objects += calcu.o

3、“%”


“%”表示长度任意的非空字符串,如:

%.c 表示所有.c文件

a.%.c表示所有以a.开头,.c结尾的文件

三、Makefile 自动化变量

1、"$@"


如果有多个目标,“$@”表示定义的目标集合。

2、"$<"


依赖文件集合中的第一个文件,如果依赖文件是以模式(即“%” )定义的,那么“$<”就是符合模式的一系列的文件集合。

3、"$^"


所有依赖文件的集合,使用空格分开,如果在依赖文件中有多个重复的文件,“$^”会去除重复的依赖文件,值保留一份。

例子


例一:

objs := start.o main.o

ledc.bin:$(objs)

arm-linux-gnueabihf-ld -Ttext 0X87800000 -o ledc.elf $^

arm-linux-gnueabihf-objcopy -O binary -S ledc.elf $@

这里的 $^ 指的是所有依赖集合: start.o main.o

这里的 $@ 指的是所有目标集合:ledc.bin

例二:

%.o:%.s

arm-linux-gnueabihf-gcc -Wall -nostdlib -c -o $@ $<

这里的 $@ 指的是所有目标集合,也就是所有的 .o 文件

这里的 $< 指的是依赖文件%.s的集合

四、Makefile伪目标


.PHONY : clean

clean:

    rm *.o

    rm main

使用.PHONY声明 clean 为伪目标以后不管当前目录下是否存在名为“clean”的文件,输入“make clean”的话规则后面的 rm 命令都会执行。

相关文章

  • Makefile简笔记

    一、Makefile 变量 #Makefile变量的使用 objects = main.o input.o cal...

  • Makefile学习笔记

    Makefile学习笔记 学习Makefile的资料 《跟我一起写makefile》 《GUN make manu...

  • Makefile自动化变量

    学习笔记,摘自陈皓的《跟我一起写 Makefile》 Makefile规则 Makefile文件由一系列规则构成。...

  • Makefile笔记

    Makefile 笔记 一、简单的 Makefile 例子 文档目录结构文档目录结构是用户目录HOME下有src ...

  • Makefile学习笔记

    Makefile学习笔记 概述 什么是makefile?或许很多Windows程序员都不知道这个东西,因为那些Wi...

  • Makefile笔记

    1. 调用shell命令 UNAME = $(shell uname -r) 2. 判断语句 KERN ?=$(i...

  • Makefile笔记

    Makefile 简介 makefile用来制定编译的规则及其其它更复杂的操作.并且能实现整个工程的自动化编译,提...

  • Makefile学习笔记

    格式:ar rcs libxxx.a xx1.o xx2.o 链接 参数r:在库中插入模块(替换)。当插入的模块...

  • Makefile 学习笔记

    1.命令前的-号表示命令执行失败后继续执行接下来的操作。 2.环境变量中MAKEFIELmake指令会把环境变量中...

  • Makefile学习笔记

    1. 概述 1.1 前言 之前在Linux下写C/C++都是直接输命令行,虽然有使用make的经历,但没有自己动手...

网友评论

      本文标题:Makefile简笔记

      本文链接:https://www.haomeiwen.com/subject/pbvpfktx.html