多目录makefile模板写法

在做linux开发的时候经常要写一些程序,这些项目还不是一个源文件就能搞定的,我这个人比较懒,懒的写makefile,也懒得记,于是就找一个模板记下来。以后照抄就好了。以下是一个例子。

# libssh2 Makefile
DIR_INC = ./include
DIR_SRC = ./src
DIR_OBJ = ./obj
DIR_BIN = ./bin

SRC = $(wildcard ${
    DIR_SRC}/*.c)  
OBJ = $(patsubst %.c,${
    DIR_OBJ}/%.o,$(notdi
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于多目录的情况,我们可以使用一个主makefile来管理整个项目,然后在每个子目录下再编写各自的makefile。以下是一个示例: 首先,我们创建一个名为`Makefile`的主makefile,并在其中定义一些变量和规则: ```makefile # 定义子目录 SUBDIRS := dir1 dir2 dir3 # 定义编译器和编译选项 CC := gcc CFLAGS := -Wall -Werror # 定义目标文件存放的目录 OBJDIR := obj # 定义目标文件和可执行文件 TARGET := myprogram OBJS := $(addprefix $(OBJDIR)/, file1.o file2.o file3.o) .PHONY: all clean $(SUBDIRS) all: $(TARGET) $(TARGET): $(OBJS) $(CC) $(CFLAGS) $^ -o $@ # 在每个子目录下执行make命令 $(SUBDIRS): $(MAKE) -C $@ # 生成目标文件的规则 $(OBJDIR)/%.o: %.c | $(OBJDIR) $(CC) $(CFLAGS) -c $< -o $@ # 创建目标文件存放的目录 $(OBJDIR): mkdir -p $@ clean: rm -rf $(TARGET) $(OBJDIR) ``` 然后,在每个子目录下创建各自的makefile,例如`dir1/Makefile`: ```makefile # 定义当前子目录下的源文件 SRCS := file1.c # 生成当前子目录下的目标文件 OBJS := $(addprefix $(OBJDIR)/, $(SRCS:.c=.o)) all: $(OBJS) $(OBJS): $(SRCS) | $(OBJDIR) $(CC) $(CFLAGS) -c $< -o $@ $(OBJDIR): mkdir -p $@ clean: rm -rf $(OBJS) ``` 其他子目录的`Makefile`可以类似地创建。 这样,通过在主makefile中定义需要编译的子目录,并在其中执行各自的make命令,可以实现多目录的编译。同时,每个子目录下的makefile会将编译生成的目标文件放入统一的目标文件存放目录中。 使用`make`命令执行主makefile即可开始编译整个项目。使用`make clean`命令可以清除编译生成的目标文件和可执行文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值