Makefile技巧

简单模板

# 你的目标文件和源文件
TARGET = my_program
SOURCE = main.c

# 编译器和编译选项
CC = gcc
CFLAGS = -Wall -O2

# 使用 pkg-config 获取库的编译和链接选项
LIBS = $(shell pkg-config --cflags --libs your-library)

# 指定依赖的头文件目录
INCLUDES = -I/path/to/your-library/include

# 编译规则
$(TARGET): $(SOURCE)
    $(CC) $(CFLAGS) $(INCLUDES) -o $(TARGET) $(SOURCE) $(LIBS)

# 清理规则
clean:
    rm -f $(TARGET)

SANITIZE_LDFLAGS = -fsanitize=address

SANITIZE_CFGLAGS = $(SANITIZE_LDFLAGS )

# 自动生成规则

# 假设有多个源文件:file1.c, file2.c, ...

OBJS = $(patsubst %.c, %.o, $(wildcard *.c))

$(patsubst pattern,replacement,text)

# 示例1: 替换后缀
SRC_FILES = file1.c file2.cpp file3.c
OBJ_FILES = $(patsubst %.c, %.o, $(SRC_FILES))
# 结果:OBJ_FILES 变量的值为 "file1.o file2.cpp file3.o"

# 示例2: 替换路径
SRC_PATHS = src/file1.c src/file2.c src/file3.c
OBJ_PATHS = $(patsubst src/%, obj/%, $(SRC_PATHS))
# 结果:OBJ_PATHS 变量的值为 "obj/file1.c obj/file2.c obj/file3.c"

# 编译规则
#-c表示不调用linker,用于生成.o
#  $<用于引用main.o规则中的依赖项,即main.c文件。
   $@用于引用规则的目标
   $^表示所有依赖项 即main.o和other.o

main.o: main.c
    gcc -c $< -o $@

# 连接规则
my_program: main.o other.o
    gcc $^ -o $@

# 清理规则
clean:
    rm -f $@ my_program main.o other.o

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值