zoukankan      html  css  js  c++  java
  • Makefile简单使用

    Makefile 文件

    Makefile 文件的配置
    makefile: 管理项目。

    命名:makefile Makefile --- make 命令

    1 个规则:

    目标:依赖条件
    (一个tab缩进)命令

    1. 目标的时间必须晚于依赖条件的时间,否则,更新目标

    2. 依赖条件如果不存在,找寻新的规则去产生依赖条件。

    ALL:指定 makefile 的终极目标。


    2 个函数:

    src = $(wildcard ./*.c): 匹配当前工作目录下的所有.c 文件。将文件名组成列表,赋值给变量 src。 src = add.c sub.c div1.c

    obj = $(patsubst %.c, %.o, $(src)) : 将参数3中,包含参数1的部分,替换为参数2。 obj = add.o sub.o div1.o

    clean: (没有依赖)

    -rm -rf $(obj) a.out “-”:作用是,删除不存在文件时,不报错。顺序执行结束。

    3 个自动变量:

    $@: 在规则的命令中,表示规则中的目标。

    $^: 在规则的命令中,表示所有依赖条件。

    $<: 在规则的命令中,表示第一个依赖条件。如果将该变量应用在模式规则中,它可将依赖条件列表中的依赖依次取出,套用模式规则。

    模式规则:

    %.o:%.c
    gcc -c $< -o %@

    静态模式规则:

    $(obj):%.o:%.c
    gcc -c $< -o %@

    伪目标:

    .PHONY: clean ALL

    参数:
    -n:模拟执行make、make clean 命令。 make clean -n

    -f:指定文件执行 make 命令。 xxxx.mk

    	makefile版本1
    	
        a.out:test.c
            gcc test.c add.c sub.c -o a.out	
    	
    	
    	
    	#src = $( wailcard *.c  )
        #obj = $( patsubst %.c,%.o,$(src))
    
        makefile 版本2
     
        a.out:test.o add.o sub.o
            gcc test.o add.o sub.o -o a.out
    
        test.o:test.c
            gcc -c test.c -o test.o
    
        sub.o:sub.c
            gcc -c sub.c -o sub.o
    
        add.o:add.c
            gcc -c add.c -o add.o
    		
    		
        makefile 版本3
    	
    	src = $(wildcard *.c)
    	obj = $(patsubst %.c,%.o,$(src))
    
    	a.out:test.o add.o sub.o
    			gcc $^ -o $@
    
    	test.o:test.c
    			gcc -c $^ -o $@
    
    	sub.o:sub.c
    			gcc -c $^ -o $@
    
    	add.o:add.c
    			gcc -c $^ -o $@
    
    	clean:
    			-rm -rf $(obj) $(ALL)
    
    	
    	makefile 版本四
    	
    	
        ALL=a.out
        src = $(wildcard ./*.c)
        obj = $(patsubst %.c,%.o,$(src))
        
        a.out:$(obj)
                gcc $^ -o $@
        
        %.o:%.c
                gcc -c $< -o $@
        
        
        clean:
                -rm -rf $(obj) $(ALL)
    

      

  • 相关阅读:
    分治法的经典问题——大整数相乘
    分治法的经典问题——大整数相乘
    L2-013. 红色警报(dfs)
    L2-013. 红色警报(dfs)
    L2-012. 关于堆的判断
    L2-012. 关于堆的判断
    二进制和位运算中的异或
    2015年天勤考研机试模拟赛 A 推断三角形
    怎样利用kettle官方社区查找关于carte服务的设置
    openCV中 libopencv-nonfree-dev的安装: undefined reference to `cv::initModule_nonfree()&#39;
  • 原文地址:https://www.cnblogs.com/love-life-insist/p/12961484.html
Copyright © 2011-2022 走看看