makefile 将生成的目标文件和可执行文件存放在指定的目录下
2017-02-23 11:51
337 查看
.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)) 生成可执行文件存放的目录
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)) 生成可执行文件存放的目录
相关文章推荐
- makefile有关问题,想像vs一样将目标文件,输出文件存放在指定文件夹,而不是在源文件的目录
- makefile中的使用 VAPTH 和“自动变量”指定目标文件的存放目录
- QT 不能在指定目录生成目标文件
- Makefile中用foreach,eval,call实现将目标文件编译到指定目录
- 编译多路径/目录源代码并生成多个可执行文件的makefile实例
- 【GDB调试学习笔记】Makefile多级目录生成可执行文件
- makefile 指定文件的生成目录
- 【GDB调试学习笔记】Makefile多级目录生成多个可执行文件
- Makefile中用foreach,eval,call实现将目标文件编译到指定目录 临峰不畏 发表于5个月前 原 Makefile中用foreach,eval,call实现将目标文件编译到指定目录
- vc2010+openCV1.0实现将指定目录下的所有jpg文件缩放后存放到目标文件夹
- 批量复制文件到指定目录并执行.bat文件(2012.06.06)
- 重复执行目标,构造文件指定目标和命令行指定目标,其结果是不一样的
- 系统找不到指定的文件。 Project : error PRJ0019: 工具从"正在执行生成后事件..."
- 生成可执行jar包和获得jar包同目录文件的方法
- BREW Makefile生成工具功能改进——把中间文件放入独立目录
- 指定Qt编译临时文件生成目录
- 多平台遍历目录和子目录中指定类型文件,并对每个文件执行命令
- 删除指定时间前目录下生成的所有文件、文件夹
- 使用当前目录作为编译目标/可执行文件名称
- Makefile 支持头文件目录的指定