makefile编译带头文件的c程序

makefile编译带头文件的c程序:

  • 程序文件目录
    请添加图片描述
文件夹文件夹所对应的作用
bin存放可执行文件的地方
include存放.h头文件的地方
obj存放.o文件的地方
src存放.c源文件的地方
  • 定义每个文件夹的路径

    DIR_INC = ./include
    DIR_SRC = ./src
    DIR_OBJ = ./obj
    DIR_BIN = bin
    
  • 获取src文件夹下面所有的.c文件。

    SRC = $(wildcard $(DIR_SRC)/*.c)
    
  • 将src目录下的.c文件全部改成obj目录下的.o文件

    OBJ = $(patsubst %.c,$(DIR_OBJ)/%.o,$(notdir $(SRC)))
    
  • .o文件生成的条件

    $(DIR_OBJ)/%.o : $(DIR_SRC)/%.c
    	@gcc -c -I$(DIR_INC) $^ -o $@  
    
  • 生成可执行文件

    exec : $(OBJ)
    	gcc $^ -o $@
    
  • 执行文件命令

    run : exec
    	./$<
    
  • 清除文件命令

    clean :
    	rm -rf obj/*
    	rm -rf bin/*
    
  • 定义命令

    .PHONY: clean run
    
完整代码:
#定义各文件路径
DIR_INC = ./include
DIR_SRC = ./src
DIR_OBJ = ./obj
DIR_BIN = bin

#获取src路径下的所有c文件
SRC = $(wildcard $(DIR_SRC)/*.c)
#将src目录下的.c文件全部改成obj目录下的.o文件
OBJ = $(patsubst %.c,$(DIR_OBJ)/%.o,$(notdir $(SRC)))

TARGET = $(DIR_BIN)/main

# .o文件生成的条件
$(DIR_OBJ)/%.o : $(DIR_SRC)/%.c
	@gcc -c -I$(DIR_INC) $^ -o $@  

#编译生成可执行文件
#$(TARGET) : $(OBJ)
#	gcc $^ -o $@

# 生成可执行文件
exec : $(OBJ)
	gcc $^ -o $@

# 执行文件
run : exec
	./$<

debug :
	@echo $(CFLAGS)

#清除文件命令
clean :
	rm -rf obj/*
	rm -rf bin/*

.PHONY:debug clean create run
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值