Makefile基础

命令方式:

       makefile 或 Makefile

makefile规则:

       目标,依赖,命令

       目标:依赖条件

              命令

版本1:

app : main.o add.o sub.o mul.o
    gcc main.o add.o sub.o

版本2:

复制代码
app:main.o add.o sub.o mul.o
    gcc main.o add.o sub.o mul.o -o app
main.o : main.c
    gcc -c main.c
add.o : add.c
    gcc -c main.c
sub.o : sub.c
    gcc -c sub.c
mul.o : mul.c
    gcc -c mul.c
复制代码

makefile工作原理:

版本3:

obj=main.o add.o sub.o mul.o
target=app
$(target):$(obj)
    gcc $(obj) -o $(target)
%.o:%.c
    gcc -c $< -o $@

 

makefile中自动变量

$<:规则中的第一个目标

$@:规则中的目标

$:规则中所有的依赖

只能在规则的命令中使用

 

Makefile维护的一些变量:

CC:默认值 cc

CPPFLAGS:预处理器需要的选项,如-I

CFLAGS:编译的时候使用的参数 -Wall -g -c

LDFLAGS:链接库使用的选项 -L -l

 

版本4:

obj=main.o add.o sub.o mul.o
target=app
CC = gcc
CPPFLAGS = -I
$(target):$(obj)
    $(CC) $(obj) -o $(target)
%.o:%.c
    $(CC)-c $< -o $@

 版本5

复制代码
target=app
src=$(wildcard ./*.c)
obj=$(patsubst ./%.c, %.o, $(src))
INCLUDE=-I ../include
CC = g++
CPPFLAGS = -I 
$(target):$(obj)
    $(CC) $(obj) -o $(target)
%.o:%.c
    $(CC) $(INCLUDE) -c $< -o $@
.PHONY:clean
clean:    
    rm $(obj) $(target)
复制代码

mkdir /aa

创建一个目录

-mkdir  -的意思是如果执行失败就忽略此条命令继续往下执行

posted @   王清河  阅读(174)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示