makefile使用

    科技2024-05-13  92

    黑马linux编程学习笔记 makefile

    文件命名:

    全部小写makefile或者首字母大写,其余字母小写Makefile

    makefile规则的三要素:

    目标、依赖、命令

    makefile的三个自动变量~只能出现在规则的命令中

    $< :规则中的第一个依赖

    $@:规则中的目标

    $^:规则 中的所有依赖

    makefile默认的编译参数,makefile文件中可以修改

    AR 库文件维护程序的名称。默认值为ar

    AS 汇编程序的名称,默认值为as

    CC C编译器的名称,默认为cc

    CPP C预编译器的名称,默认值为$(CC) -E

    CXX C++编译器的名称,默认值为g++

    FC FORTRAN编译器的名称,默认值为f77

    ARFLAGS 库文件维护的程序选项,无默认值

    ASFLAGS 汇编程序的选项,无默认值

    CFLAGS C编译器的选项,无默认值

    CPPFLAGS C预编译的选项,无默认值

    CXXFLAGS C++编译器的选项,无默认值

    FFLAGS FORTRAN编译器的选项,无默认值

    AR 函数库打包程序,可创建静态库.a文档。默认是"ar"。 AS 汇编程序。默认是"as"。 CC C编译程序。默认是"cc"。 CXX C++编译程序。默认是"g++"。 CPP C/C++预处理器。默认是"$(CC) -E"。 FC Fortran编译器。默认是"f77"。 PC Pascal语言编译器。默认是"pc"。 YACC Yacc文法分析器。默认是"yacc"。

    ARFLAGS 函数库打包程序的命令行参数。默认值是"rv"。 ASFLAGS 汇编程序的命令行参数。 CFLAGS C编译程序的命令行参数。 CXXFLAGS C++编译程序的命令行参数。 CPPFLAGS C/C++预处理器的命令行参数。 FFLAGS Fortran编译器的命令行参数。 PFLAGS Pascal编译器的命令行参数。 YFLAGS Yacc文法分析器的命令行参数。 LDFLAGS 链接器的命令行参数。

    样例脚本

    #obj=main.o add.o sub.o mul.o target=app #查看当前目录下的.c文件赋值给变量src src=$(wildcard ./*.c) # 把变量src中的.c 替换成.o obj=$(patsubst ./%.c, ./%.o, $(src)) #CC=gcc #CPPFLAGS= -I $(target):$(obj) $(CC) $(obj) -I./include -o $(target) %.o:%.c $(CC) -c -I./include $< -o $@ #声明clean为伪目标 .PHONY:clean clean: #-rm #前面加- 这条命令失败了,继续执行后续命令 #前面没- 这条命令失败后,后续命令也不会执行 rm $(obj) $(target) -f #这种可以测试默认的参数 hello: echo $(CC) $(CPPFLAGS)
    Processed: 0.009, SQL: 9