makefile工程管理

  个人理解吧,makefile就是写一个指定格式的文件,将一系列的编译、链接、转换等操作打包在一起,方便以后一键生成可执行的二进制文件而产生的。下面记录一下这种文件的写法,方便以后忘了来查询。
  makefile文件一般格式(又叫规则):

  目标文件名:依赖文件名
  命令

  就是这样,注意第二行,命令前面的空白不是用空格键敲出来的,而是用一个Tab键直接搞定。其中,目标文件只能有一个,而依赖文件可以有一个,可以有多个,甚至一个也没有。没有依赖文件的目标称为伪目标,通常是为了给某个操作命名方便以后直接使用。

  

  如图所示,第一条规则中,all为目标文件,led.o为依赖文件,下面的两行即为为了生成目标文件而使用依赖文件执行的某种命令。第二条规则同理。根据 上述可知,第三条规则中的目标是一个伪目标,一般的makefile文件中都会用.PHONY来对伪目标进行声明。该伪目标的作用就是给后面的命令起个名 字,方便以后直接make调用。写完之后保存退出就可以使用啦!这时候问题来了,这个makefile文件应该如何使用?如果当初编辑这个文件时给它起的 名字是makefile或者Makefile,那么就可以直接使用,因为系统认识。比如make all、make led.o、make clean,都可以执行相对应的规则。或者只打make,这时候执行的就是makefile这个文件中的第一条规则,下面举图说明。

  

  一个make命令有了后续的三个操作。这时候问题来了:我执行的第一条规则为什么首先会出现第二条规则的命令?仔细看过就能知道,第一条规则的依赖文件是 led.o,而这个时候没有执行第二条规则,所以系统中并没有led.o这个文件,要执行第一条规则,就必须先执行第二条规则来产生第一条规则的依赖文件 led.o。所以有了图中的那三条命令。那么编写makefile是能不能起别的名字呢?当然可以,只是这样写出来的文件系统不认识,不过只需要加一个选 项就可以搞定。 

  

  如图所示,将makefile文件重命名为wsk,这时候系统不认识了,怎么来make呢?只需要在文件名前加上-f选项就OK。如:“make    -f    wsk    Clean”,即可产生wsk文件中的Clean目标文件。So easy~~!
  下面说说编写makefile文件过程中的一些技巧:
  

  如图所示,编写文件的过程中,func1.o,func2.o两个依赖文件多次出现,那么每次写一条规则的时候都列举这些相同的依赖文件未免有些繁琐。我 们可以将这些文件定义为一个变量,以后需要调用的时候直接调用变量就OK。linux中变量是没有类型的,直接给它起个名字就可以拿来用了。像例子中的, 将func1.o,func2.o赋值给变量obj,注意不同的文件之间用空格分开,以后用到这些文件直接用$(obj)来调用就OK了,方便美观。在 linux中,用户不仅可以用自己定义的变量,也可以用系统定义的变量,这些看看就好。

时间: 2024-09-30 19:05:48

makefile工程管理的相关文章

3.Makefile工程管理

3.Makefile工程管理 一.体验 在前面的笔记里可以看到,要编译一个简单的工程需要的编译步骤是很多的.前面还是只有一个汇编文件,在一个工程里,会有很多文件的,如果像前面的那种编译方式是很不可靠的.这就需要Makefile工程管理. 例如前面的那个led.S,要编译成led.bin的步骤:图1-1: arm-linux-gcc -g -c led.S arm-linux-ld -Tled.lds -o led.elf led.o arm-linux-objcopy -O binary led

makefile 工程管理

GNU make Linux程序员必须学会使用GNU make来构建和管理自己的软件工程. GNU 的 make 能够使整个软件工程的编译.链接只需要一个命令就可以完成. Makefile make在执行时,需要一个名为Makefile的文件. Makefile文件描述了整个工程的编译,链接等规则. 其中包括哪些源文件需要编译以及如何编译: 需要创建哪些库文件以及如何创建这些库文件: 如何最后产生我们想要的可执行文件. Makefile(例子) hello:main.o func1.o func

4.Makefile工程管理

????使用GNU Make工具来管理程序是每个Linux工程师必须掌握的技能.Make能够使整个程序的编译.链接只需一个命令就可以完成.Make的工作主要依赖于一个叫作Makefile的文件.Makefile文件描述了整个程序的编译,链接等规则.其中包括:工程中的哪些源文件需要编译以及如何编译,如何最后产生我们想要的可执行文件. 例如: Makefile的规则: ? Makefile中有且只有一个最终目标,其它的目标都是被这个目标连带出来的,其中的目标都是被这个目标所连带出来的.一般来说,定义

Linux学习——Makefile工程管理

使用Gnu make工具来管理程序是每个Linux工程师必须掌握的技能.Make能够是整个程序的编译.链接只需要一个命令(make)就可以完成.Make的工作主要依赖一个称为Makefile的文件.文件描述了整个程序的编译,链接等规则.包括:工程中哪些源文件需要编译以及如何编译,如何最后产生我们想要的可执行文件. makefile主要由规则和变量两部分构成. 规则: 一般规则如下: targets : prerequisites command 目标:依赖 命令 备注:命令需要使用[TAB]键空

[国嵌笔记][017][Makefile工程管理]

Makefile的用途 1.make能够使整个程序的编译.链接只需一个命令就可以完成 2.make的工作主要依赖于Makefile的文件.Makefile文件描述了整个程序的编译.链接等规则,使之自动完成. Makefile的构成 1.规则 targets(目标):prerequisties(依赖) command(命令) 注意:command前面是[tab]而不是空格,否则执行会出错 1.伪目标:只有目标和命令,没有依赖的规则称为伪目标,伪目标通常用 .PHONY:targets (也可以不写

1.3 Makefile 工程管理

1. 为什么得用Makefile 单步命令生成led.bin [[email protected] lesson1]# cd .. [[email protected] Part1]# mkdir lesson3 [[email protected] Part1]# cd lesson3 [[email protected] lesson3]# chmod 777 ./ [[email protected] lesson3]# ls led.lds led.S Makefile [[email 

嵌入式linux QT开发(四)——QT Creator工程管理

嵌入式linux QT开发(四)--QT Creator工程管理 一.QT Creator工程管理 QT Creator以工程项目的方式对源码进行管理,一个QT工程中包含不同类型的文件如下: A..pro项目描述文件 B..pro.user用户描述文件 C..h头文件 D..cpp源文件 E..ui界面描述文件 F.资源文件(图片.音频等) 二..pro项目描述文件 1..pro项目描述文件基本构成如下: A.#注释起始符 B.QT模块声明 C.TARGET可执行文件名 D.TEMPLATE程序

使用BLADE构建c++工程管理

使用BLADE构建c++工程管理 字数764 阅读2753 评论2 喜欢4 一. c++工程依赖管理 之前在百度一直使用comake2构建c++项目,十分方便.免去了手写Makefile的痛苦,很多项目都不需要从零开始,其中的一个配置类似如下: WORKROOT('../../../')CopyUsingHardLink(True)CPPFLAGS('-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -DVERSION=\\"1.9.8.7\\"')CFLAGS(

emacs工程管理,cedet ede插件自动构建Make,Automake

鉴于自己一直都是在做客户端开发方面的工作,服务端很多知识都随着时间淡忘了,最近有一个计划,用一些时间补一下基础.所以早上很早就起床,花了一点时间大致浏览了一下BSD socket的相关API,然后用GNU C写了一个简单的多线程,阻塞EchoServer.工程的代码倒是不多,就是基于原生API开发,总是有很多的errcode需要处理,比较的烦.所以我干脆就直接写了个宏去处理,简单的输出strerrno(errno)和errno就好.虽然这个宏实现起来比较的简单,但是还是感觉比较的值,节省了不少的