Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2571871
  • 博文数量: 315
  • 博客积分: 3901
  • 博客等级: 少校
  • 技术积分: 3640
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-08 15:32
个人简介

知乎:https://www.zhihu.com/people/monkey.d.luffy Android高级开发交流群2: 752871516

文章分类

全部博文(315)

文章存档

2019年(2)

2018年(1)

2016年(7)

2015年(32)

2014年(39)

2013年(109)

2012年(81)

2011年(44)

分类: 项目管理

2011-11-26 13:00:13

一、通用形式@1

target = app
src = $(wildcard *.c)
obj = $(patsubst %.c, %.o, $(src))

CC = gcc
CPPFLAGS = -I ./head
CFLAGS = -Wall -g
DFLAGS =

$(target):$(obj)
    $(CC) $(DFLAGS) $^ -o $@
%.o:%.c
    $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

clean:
    -rm -rf $(obj)
distclean:
    -rm -rf $(obj) $(target)

.PHONY:clean distclean

说明:还有很多参数没有定义,其实Makefile还有很多很复杂的写法,很多Makefile看起来都比较复杂,但是其
中的语法应该都是类似的。真正的项目的Makefile都比较复杂,所以以后工作了好好学习下。


二、通用形式@2

target = app
src = $(wildcard *.c)
obj = $(src: .c=.o)

all:
    gcc -g -Wall $(obj) -o $(target)

clean:
    -rm -rf *.o $(target)
.PHONY:clean

三、通用形式@3



四、 相关小记:
     /*Mafile*/
target = app
src = $(wildcard *.c)
obj = $(patsubst %.c, %.o, $(src))

CC = gcc
CPPFLAGS = -I ./head
CFLAGS = -Wall -g
DFLAGS =

$(target):$(obj)
    $(CC) $^ -o $@

computer:
    make -C computer

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

clean:
    -rm -rf $(obj)
distclean:
    -rm -rf $(obj) $(target)

.PHONY:clean distclean computer

2. 静态模式规则,隐式规则
 隐式规则  如果写的像这样: all:$(obj) 工具默认去make数据库去找对应规则满足你的要求
 静态模式  如果这样: $(target):%.o:%.c
            $(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@

akaedu@akaedu-desktop:~/test/student$ make -p > log //输出重定向,查看相关隐式规则信息
akaedu@akaedu-desktop:~/test/student$ ls
app  log  Makefile  student_sort.c  student_sort.o
akaedu@akaedu-desktop:~/test/student$ vim log


3.关于Makefile中命令行参数的使用方法;关联G:\FORGOTTON\for面试\demo_c\file

    like:
        var1 =
        var2 =
        go:
            ./$(target) $(var1) $(var2)

    Using:make go var1=file1.txt var2=file2.txt




阅读(1929) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~