• Makefile中的变量


    系统变量

    • $*不包括扩展名的目标文件名称
    • $+ 所以的依赖文件,以空格分隔
    • $< 表示规则中的第一个条件
    • $? 所有时间戳比目标文件晚的依赖文件,以空格分隔
    • $@ 目标文件的完整名称
      • $@指代目标(:前面的)
    • $^ 所有不重复的依赖文件,以空格分隔
      • $^: 指代所有条件(:后面的)
    • $% 如果目标是归档成员,则该变量表示目标的归档成员名称

    系统常量(可理解为宏或别名)(可用make -p查看)

    • AS汇编程序的名称,默认为as
    • CCC编译器名称,默认为cc
    • CPPC预编译器名称, 默认cc -E
    • CXXC++编译器名称,默认g++
    • RM文件删除程序别名, 默认rm -rf

    自定义变量

    • 定义: 变量名=变量值
    • 使用: ( 变量名 ) / (变量名)/ (变量名)/{变量名}
    OBJ = add.exe
    TARGET = calc
    
    $(TARGET):$(OBJ)
    	gcc add.exe main.c -o main
    
    add.exe:add.c
    	gcc add.c -nostartfiles -o add.exe
    
    clean:
    	del *.exe
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    OBJ = add.exe
    TARGET = calc
    
    $(TARGET):$(OBJ)
    	gcc add.exe main.c -o main
    
    add.exe:add.c
    	gcc $^ -nostartfiles -o $@
    
    clean:
    	del *.exe
    show:
    	@echo $(AS)
    	@echo $(CC)
    	@echo $(CPP)
    	@echo $(CXX)
    	@echo $(RM)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    OBJ1 = add.o
    
    calc:$(OBJ1)
            g$(CC) $^ main.c -o $@
    add.o:add.c
            g$(CC) -c $^ -nostartfiles -o $@
    
    main.o:main.c
            g$(CC) 0c $^ -o $@
    
    clean:
            @$(RM) *.out *.o
    
    show:
            @echo $(AS)
            @echo $(CC)
            @echo $(CPP)
            @echo $(CXX)
            @echo $(RM)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    肝了4天,终于把Vue3编译原理之transform憋出来了
    ARP代理与二层隔离技术
    Kubernetes Pod调度策略
    安卓开发面试题
    八股文之Oracle
    (附源码)计算机毕业设计SSM健身房管理系统
    如何在你的 Flutter 中使用 input chip 标签组件
    漏电断路器
    cks 考试指南
    spring-01-依赖注入
  • 原文地址:https://blog.csdn.net/yasinawolaopo/article/details/127686811