zoukankan      html  css  js  c++  java
  • 自用 方便写C语言demo的makefile

    #################################
    #FILES
    #################################
    objs := posix_ipcname sysv
    
    cfiles := $(wildcard *.c)
    cobjs := $(patsubst %.c,%,$(cfiles))
    
    $(warning cfiles : $(cfiles))
    $(warning cobjs : $(cobjs))
    
    
    ##################################
    #GOALS
    ##################################
    #the 'all' golas, depend on mult gols
    all: $(objs)
        -@echo [all] $+
    
    allc : $(cobjs)
        -@echo [allc] $+
        -@echo [allc] $@ $<
    
    #mult, any, golas's rule
    % : %.c
        -@echo [cobjs] $@ : $< [+.c]
        $(CC) $< -o $@ -g
        
    #################
    #CLEAN GOALS
    #################
    #$(objs): %.b : %.c
    #    -@echo BBBB $^ $@
    
    .PHONY: clean
    .PHONY: cleanc
    clean:
        -rm *.o
        -rm $(objs)
        
    cleanc:
        -rm *.o
        -rm $(cobjs)

    以上内容放到 名称为makefile 的文件中,保存到和你的demo 源文件到同一个目录下

    使用场景:

    每次新增一个.c  文件的单独模块的 demo后,都要手动写 gcc file.c -o file -g 来编译新增的demo文件 ,比较麻烦

    适合每个demo 单独一个.c 文件,写好源码后保存,在该目录打开 shell  只敲一句 make 就可以编译新增的.c 文件 (或手动配置到objs变量中也可以)

    命令:

    1组

    make

      只编译makefile中 objs 变量指定的文件 (不要.c的后缀)

    make clean 

      只清理  objs 编译出来的 .o 和 可执行文件

    2组

    make allc

      编译前扫一遍当前目录下的所有.c 文件 有哪些,可以省去不用添加新的源文件名到  objs 变量的麻烦。会将当前目录下所有.c 文件编译成 同名的可执行文件

    make cleanc

      扫一遍当前目录下的所有.c 文件 有哪些,清除这些文件的.o 和 可执行文件

    例如

    一目录下有3个demo文件

    每个都要敲gcc 很麻烦

    只要一句make

     都编译出来了

     
  • 相关阅读:
    #2019120500018-LG 小雨的数字游戏
    假期Noip笔记
    #2019120500016 逆序对与归并排序
    #2019120500015-LG 全排列
    #2019120500014-LG 采药
    #2019120500013-LG 合并果子
    二分与三分
    #2019120500012-LG 小鱼比可爱
    #2019120500011-LG 约瑟夫问题&玩具谜题
    HDU 5738 共线点集
  • 原文地址:https://www.cnblogs.com/cyy12/p/12231403.html
Copyright © 2011-2022 走看看