zoukankan      html  css  js  c++  java
  • makefile学习(2)

    新建目录如下:

    ├─include
    │     integrate.h
    │ 
    └─src
        │     integrate.c
        │     main.c
        │     makefile
        │ 
        └─obj
    

    obj用于存放object文件。

    makefile如下:

    IDIR = ../include
    CC = gcc
    CFLAGS = -I$(IDIR)
    
    ODIR = obj
    LDIR = ../lib
    
    LIBS = -lm
    
    _DEPS = integrate.h
    DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
    
    _OBJ = main.o integrate.o 
    OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
    
    $(ODIR)/%.o: %.c $(DEPS)
        $(CC) $(CFLAGS) -c $< -o $@
    
    main: $(OBJ)
        $(CC) $(CFLAGS) $(LIBS) $^ -o $@
    
    .PHONY: clean
    
    clean:
    rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ *.exe
    

    输出结果:

    gcc -I../include -c main.c -o obj/main.o
    gcc -I../include -c integrate.c -o obj/integrate.o
    gcc -I../include -lm obj/main.o obj/integrate.o -o main
    

    patsubst格式如下:

    $(patsubst <pattern>,<replacement>,<text> )
    模式字符串替换函数——patsubst。
    功能:查找<text>中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pattern>,如果匹配的话,则以<replacement>替换。

       这里,<pattern>可以包括通配符“%”,表示任意长度的字串。如果<replacement>中也包含“%”,那么,<replacement>中的这个“%”将是<pattern>中的那个“%”所代表的字串。

       (可以用“”来转义,以“\%”来表示真实含义的“%”字符)
    返回:函数返回被替换过后的字符串。

    示例:

    $(patsubst %.c,%.o, a.c b.c)

    把字串“a.c b.c”符合模式[%.c]的单词替换成[%.o],返回结果是“a.o b.o”

    上例中:
    DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))的意思是:把字符串“integrate.h”替换成:“../include/integrate.h”
    这样make就能找到integrate.h头文件了。

  • 相关阅读:
    ubuntu14.0 服务器webmin安装
    python如何简单的处理图片(1):打开显示
    如何在YouTube上下载视频
    Ubuntu下下载使用sublime
    IndentationError: unexpected indent
    Linux下vim显示行数
    Linux下tree的使用介绍
    Mac利用分屏spliter
    redis开机自启动脚本(linux)
    java 反射应用
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/10890970.html
Copyright © 2011-2022 走看看