• Write a makefile to compile *.c and link to executable target


    https://wenku.baidu.com/view/b1ec946027d3240c8447ef9a.html

    GNU+make中文手册V3.8

    <=========From Docs==============>

    一般我们可以使用“$(wildcard *.c)”来获取工作目录下的所有的.c 文件列表。复
    杂一些用法;可以使用“$(patsubst %.c,%.o,$(wildcard *.c))”,首先使用“wildcard”
    函数获取工作目录下的.c 文件列表;之后将列表中所有文件名的后缀.c 替换为.o。这样
    我们就可以得到在当前目录可生成的.o 文件列表。因此在一个目录下可以使用如下内
    容的 Makefile 来将工作目录下的所有的.c 文件进行编译并最后连接成为一个可执行文
    件:
    #sample Makefile
    objects := $(patsubst %.c,%.o,$(wildcard *.c))
    foo : $(objects)
    cc -o foo $(objects)
    这里我们使用了make的隐含规则来编译.c的源文件。对变量的赋值也用到了一个
    特殊的符号(:=)。关于变量定义可参考 6.2 两种变量定义 一节。函数“patsubst”可
    参考 8.2 文本处理函数 一节

    <--------------My Example ------>

    #Settings for Ubuntu
    CC=arm-none-eabi-gcc
    LINK=arm-none-eabi-ar
    TARGET=libSample-linaro.a
    CCFLAG=-Dxxx=1 -DHHH  -I ./

    #Start Test!

    allobjects := $(patsubst %.c,%.o,$(wildcard *.c))
    $(TARGET): $(allobjects)
        $(LINK) rcs $(TARGET) $(allobjects)

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

    clear:  
        rm -rf $(TARGET)
        rm -rf $(allobjects)

    #end Test

  • 相关阅读:
    flask1 + jinja2 day88
    linux9
    linux8 redis集群槽+docker
    dsadfa
    redis
    aaa
    a
    题目
    java对含有中文的字符串进行Unicode编码
    Java转Double类型经纬度为度分秒格式
  • 原文地址:https://www.cnblogs.com/shinedream/p/9014339.html
Copyright © 2020-2023  润新知