Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1732797
  • 博文数量: 782
  • 博客积分: 2455
  • 博客等级: 大尉
  • 技术积分: 4140
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 21:37
个人简介

Linux ,c/c++, web,前端,php,js

文章分类

全部博文(782)

文章存档

2015年(8)

2014年(28)

2013年(110)

2012年(307)

2011年(329)

分类:

2012-01-05 11:32:59

一、通用形式@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




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