C++学习笔记24:makefile文件

makefilec++

make命令:负责c/c++程序编译与连接shell

  • make根据指定命令进行建构
  • 建构规则文件:GNUmakefile , makefile,Makefile

makefile 文件格式函数

makefile 语法测试

--基本语法,变量,条件判断,循环,函数ui

makefile 文件的基本格式spa

target...:prerequisites...对象

[tab键]  commands继承

 makefile文件的规则进程

  • makefile 文件由一系列规则构成
  • 规则目的:建构目标的先决条件是什么以及如何构建目标
  • 若是没有指定目标,缺省执行第一个目标
  • 若prerequisites中有一个以上的文件比target文件要新,执行commands所定义的命令

 

target:目标get

  • 一般为编译期的文件名,以指定要建构的对象,也能够是执行文件,还能够是标签(操做名称,伪目标)
  • 能够是单一目标,也能够为空格分隔的多个目标
  • 每一个目标都定义了一组处理规则,和其相关规则构成规则链

 

prerequisites:先决条件

  • 为生成该目标所须要的先决文件或者目标(前置条件)
  • 通常为空格分隔的文件名,指定目标是否重建的判断标准,即只要有一个先决条件不存在或者有过更新,就须要重建目标

prerequisites:先决条件

若目标先决条件自己须要重建,则匹配该先决条件的目标,执行其对应的命令

commands:命令

由一行或者多行shell命令组成,命令前有Tab键

指示如何建构目标,通常为生成目标文件

每行命令都在单独的进程中执行,彼此没有继承关系,不能简单传递数据;解决办法是:用分号将多条命令书写在单行(此时可用“\”折行),或者为该条规则添加指示“.ONESHELL:”

 

伪目标:操做名称,而不是文件名

  • 删除编译后的二进制目标文件,例如:

clean:

    rm -f *.o

执行命令时需指定伪目标:$make clean

若当前目录下有clean文件,则此规则不会被执行;此时可用“.PHONY:clean”明确指示clean为伪目标;

make将跳过文件检查,执行其对应的命令

执行清除任务的伪目标通常放在脚本的最后

 

 

伪目标惯例

  • all:全部目标的目标,通常为编译后全部的目标,对同时编译多个程序颇有用
  • clean:删除由make建立的文件
  • install:安装已编译好的程序,主要任务是完成目标文件的拷贝
  • print:列出改变过的源文件
  • tar:打包备份源文件,造成tar文件
  • dist:建立压缩文件,通常将tar文件压缩成Z文件或者gz文件
  • TAGS:更新全部的目标,以备完整地从新编译使用
  • check和test:通常用来测试makefile的流程

 

例子:假设程序主文件为:main.c,使用library库

#注释行

prog:main.o library.o

  cc -o prog main.o library.o

main.o: main.c library.h

  cc -c main.c

library.o:library.c library.h

  cc -c library.c

.PHONY:clean

clean:

  rm main.o library.o

接下里:make(生成prog)

    make clean 

相关文章
相关标签/搜索