Makefile中常用规则总结

    xiaoxiao2021-08-16  110

    Makefile中常用规则总结 一、make常用选项 -d    显示调试信息 -f    指定从哪个文件中读取依赖关系信息。默认文件是“Makefile”或“makefile” ,”-“表示从标准输入 -h    显示所有的Makefile的help信息 -n    打印所有Makefile执行命令,但不执行这些命令 -s    运行时不显示任何信息   注释 :# 连接符:\ 关联列表和命令列表中使用shell通配符:?、* 默认模式规则 %.o:%.c:   (CC) (CC)(CFLAGS) -c $< %.o:%.s:   (AS) (AS)(ASFLAGS) -o @ @< 简单变量 定义:变量名:=文本 添加:变量名+=文本 变量引用 ()  {变量名}   @  当前目标的名称 ?    <   比当前目标更新的已修改的当前依赖性名称    使makeall    Makefile  make all #使目标全部被执行 clean    删除make all生成的所有文件 install   在系统目录中安装工程项目生成的可执行文件和文档 uninstall 删除make install 安装的所有文件

    二、Make命令与Makefile Makefile文件内容 显示规则:说明了如何生成一个或多个目标文件(包括要生成的文件/文件的依赖文件/生成的命令)。 隐式规则 变量定义:一般是字符串,Makefile被执行时,其中变量都会拓展到相应的引用位。 文件指示: 1 在一个Makefile文件中引用另一个Makefile文件 (类似include) 2 根据某些情况指定makefile文件中的有效部分 (类似预编译#if) 3 定义一个多行的命令 注释: 注释符#(Makefile文件中需要用到#,可以使用#转义) 注意: makefile文件的文件名可以是其他名称,但要使用-f或–file指定

    make工作执行步骤 1 读入所有makefile文件 2 读入被include包括的其他makefile文件 3 初始化文件中的变量 4 推导隐式规则,并分析所有规则 5 为所有目标文件创建依赖关系链 6 根据依赖关系,决定哪些目标要重新生成 7 执行生成命令 make参数 例子 作用 -f --file make -f makelinux 指定特定的makefile文件 -I --include-dir 在指定目录下寻找makefile文件 -n --just-print 只是显示->命令不执行命令 -s --silent 禁止命令的输出显示 makefile关键子 例子 作用 include include ../Make.defines 将别的makefile文件包含进来 include foo.make *.mk (bar)−include不理会无法找到的文件wildcardobjects:= (bar)−include不理会无法找到的文件wildcardobjects:=(wildcard *.o) 让通配符在变量中展开,即让objects的值成为所有.o的文件名的集合 vpath <pattern> <directory> vpath %.h ../headers 为符合模式<pattern>的文件指定搜素目录 vpath %.c foo:bar vpath blish 这两句一起用的话,表示.c结尾的文件先在foo,然后在bar,最后在blish中寻找 vpath <patterh> 清除符合模式<pattern>的文件的搜索目录 vpath 清除所有已设置好的文件搜索目录 定义环境变量 例子 作用 MAKEFILES 把此变量的值(其他makefile,多个文件用空格分隔)作为一个类似于include的动作 VPATH VPATH = src:../headers 让make根据路径寻找目标依赖文件,多个路径用:隔开 自动变量 @目标集 @目标集< 所有的依赖目标集 Makefile书写规则(里面的命令其实是shell命令) 通配符(定义一系列比较类似的文件) * objects=*.o 所有的.o文件的集合 ? [] ~ ~/test 表示宿主主目录下test文件 文件搜寻 VPATH vpath 关键字 伪目标 .PHONY .PHONY: clean 伪目标可以直接放在make后面像操作文件一样操作 make clean 多目标 静态模式 目标集合 目标集模式 目标集的二次定义 <targets ...>: <target-pattern>: <prereq-pattern> <commands> ... makefile文件的函数 filter 自动生成依赖关系 gcc -MM main.c //查找main.c文件包含的头文件,并生成依赖关系 .d文件的应用 使用命令 显示命令 @ehco (@避免输出命令,只输出命令执行结果) 执行命令 exec: cd /home/hchen; pwd 第二条命令执行建立在第一条命令结果上
    转载请注明原文地址: https://ju.6miu.com/read-676467.html

    最新回复(0)