makefile 将生成的目标文件和可执行文件存放在指定的目录下

.PHONY: all clean
CC = gcc
RM = rm
MKDIR = mkdir
CFLAGS = -Wall -std=gnu99

INC = -I ../include/hh_include

DIR_OBJS = ../obj
DIR_EXEC = ../exec

DIRS := $(DIR_OBJS) $(DIR_EXEC)
EXEC = prin
SRCS = $(wildcard *.c)
OBJS = $(SRCS:.c=.o)

OBJS := $(addprefix $(DIR_OBJS)/,$(OBJS))
EXEC := $(addprefix $(DIR_EXEC)/,$(EXEC))

all: $(DIRS) $(EXEC)
$(DIRS):
$(MKDIR) $@
$(EXEC):$(OBJS)
$(CC) -o $@ $^
$(DIR_OBJS)/%.o:%.c
$(CC) $(CFLAGS) $(INC) -o $@ -c $^

clean:
$(RM) -rf  $(DIRS) $(EXEC)

 

解释:
1、.PHONY 修饰的目标就是只有规则没有依赖。由于makefile只能有一个目标,所以可以使用all来构造一个没有规则的终极目标。
并以可执行文件作为依赖。clean 清除所有的依赖和编译时生成的文件
2、CC RM MKDIR CFLAGS 作为变量,使用该变量的值使用$(变量名)
3、INC 指定的是编译源文件所需要的头文件的路径
4、./ 为当前目录 ../为当前目录的上一层目录
5、SRCS = $(wildcard *.c) 当前目录下的所有源文件
OBJS := $(addprefix $(DIR_OBJS)/,$(OBJS)) 生成目标文件存放的目录
EXEC := $(addprefix $(DIR_EXEC)/,$(EXEC)) 生成可执行文件存放的目录

原文链接:https://blog.csdn.net/sxf_123456/article/details/56668015

原文链接: https://www.cnblogs.com/alix-1988/p/14893890.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    makefile 将生成的目标文件和可执行文件存放在指定的目录下

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/400696

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月17日 上午9:27
下一篇 2023年4月17日 上午9:27

相关推荐