码迷,mamicode.com
首页 > 其他好文 > 详细

简单实用的Makefile

时间:2020-07-19 11:41:12      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:put   des   make   树结构   out   main   源文件   $@   关系   

第一种:

# 目录树结构如:
# .
# ├── exec
# ├── exec.c
# ├── fork
# ├── fork.c
# ├── Makefile
# 对于自己做的一些小练习,用这样的Makefile非常方便

SRC = $(wildcard *.c)
TARGETS = $(patsubst %.c, %, $(SRC))    # get targets name without .c
CC = cc

all: $(TARGETS)

%: %.c
$(CC) $< -o $@

.PHONY: clean
clean: 
rm -rf $(TARGETS)

 

第二种:

# 目录树如下:
# .
# ├── h
# │   ├── main.h
# │   └── print.h
# ├── makefile
# ├── output
# │   └── a.out.1.0.0
# └── src
#     ├── main.c
#     ├── main.o
#     ├── print.c
#     └── print.o

# makefile - enterprise version

VERSION = 1.0.0                                         #版本号
TARGET = a.out                                          #生成的可执行文件名
SOURCE = $(wildcard src/*.c)                            #各个源文件
OBJ = $(patsubst %.c, %.o, $(SOURCE))                   #对应的各中间文件.o

INCLUDES = -I ./h                                       #头文件的包含路径
CFLAGS = -Wall -c                                       #gcc编译选项
DEBUG = -D HELLO                                        #debug选项:-D后加程序中的#ifdef SYMBOL,相当于定义了该符号
#LIBS =                                                 #库文件路径
CC = cc                                                 #定义CC

$(TARGET): $(OBJ)                                       #目标文件依赖
    @mkdir -p ./output                                  #创建目录但不回显
    $(CC) $(OBJ) -o ./output/$(TARGET).$(VERSION)       #可执行文件名后跟版本号,便于区分版本

%.o: %.c                                                #中间文件依赖,这里%符的使用:对于所有的n个xx.c,有相应的xx.o,相当于展开为n个依赖关系,这种写法很简洁
    $(CC) $(INCLUDES) $(DEBUG) $(CFLAGS) $< -o $@       #$<代表依赖列表的第一个文件,$@代表目标文件

.PHONY: clean
clean:
    -rm -rf $(TARGET) $(OBJ) ./output/*

 

简单实用的Makefile

标签:put   des   make   树结构   out   main   源文件   $@   关系   

原文地址:https://www.cnblogs.com/uestcliming666/p/13338781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!