【ASM C/C++】 Makefile 规则说明

make 命令会自动读取当前目录下的 Makefile 文件[31],完成相应的编译步骤。Makefile 由一组规则(Rule)组成,每条规则的格式是:
target ... : prerequisites ...

   command1

  command2

  ...

目标和条件之间的关系是:欲更新目标,必须 首先更新它的所有条件;所有条件中只要有一个条件被更新了,目标也必须随 之被更新。所谓“更新”就是执行一遍规则中的命令列表,命令列表中的每条 命令必须以一个 Tab 开头,注意不能是空格,Makefile 的格式不像 C 语言的缩 进那么随意,对于 Makefile 中的每个以 Tab 开头的命令,make 会创建一个 Shell 进程去执行它。

• 目标没有生成。

• 某个条件需要更新。

• 某个条件的修改时间比目标晚。

clean 目标是一个约定俗成的名字,在所有软件项目的 Makefile 中都表示清 除编译生成的文件,类似这样的约定俗成的目标名字有:
• all,执行主要的编译工作,通常用作缺省目标。
• install,执行编译后的安装工作,把可执行文件、配置文件、文档等
分别拷到不同的安装目录。
• clean,删除编译生成的二进制文件。
• distclean,不仅删除编译生成的二进制文件,也删除其它生成的文
件,例如配置文件和格式转换后的文档,执行 make distclean 之后 应该清除所有这些文件,只留下源文件。

变量:

#定义变量
PROJECT = test_projet
#变量追加值
PROJECT += $(AUTHOR)
#立即展开的变量
AUTHOR := A Been

• [email protected],表示规则中的目标。

• $<,表示规则中的第一个条件。

• $?,表示规则中所有比目标新的条件,组成一个列表,以空格分隔。

• $^,表示规则中的所有条件,组成一个列表,以空格分隔。

示例:
all: main

main: test.c
gcc test.c

clean:
@echo cleanning $(PROJECT) project
-rm *.out
@echo clean completed

install:
@echo install project
@echo install completed

.PHONY: clean

#定义变量
PROJECT = test_projet
#变量追加值
PROJECT += $(AUTHOR)
#立即展开的变量
AUTHOR := A Been

时间: 2024-10-14 05:24:10

【ASM C/C++】 Makefile 规则说明的相关文章

makefile规则编写&amp;C语言字符串拷贝&amp;vim介绍

makefile规则:[email protected]:目标文件$^:所有的依赖文件$<:第一个依赖文件-c:输出目标代码,不输出可执行文件-g:编译器编译的时候提供以后对程序调试的信息target:rules    gcc -o [email protected] $^install:    cp target /usr/local/binclean:    rm target    lib库查找方法:nm -o /lib/*.so | grep "函数名字" nm -o /

Makefile 规则的使用

1.Makefile格式 //最终目标 all: led.o //依赖 arm-linux-ld -Tled.lds -o led.elf led.o //命令 arm-linux-objcopy -O binary led.elf led.bin //命令 //目标 led.o : led.S//依赖 arm-linux-gcc -g -o led.o -c led.S //命令 .PHONY: clean //伪目标--无依赖 clean: rm *.o led.elf led.bin //

Makefile规则③规则语法、依赖、通配符、目录搜寻、目标

规则语法 通常规则的语法格式如下: TARGETS : PREREQUISITES COMMAND ... 或者: TARGETS : PREREQUISITES ; COMMAND COMMAND ... 规则中" TARGETS"可以是空格分开的多个文件名,也可以是一个标签(例如:执行清空的" clean")." TARGETS"的文件名可以使用通配符,格式" A(M)"表示档案文件( Linux下的静态库.a文件)的成员

自动构建Makefile(1)--C/C++编译流程&amp;Makefile规则简介

前言: 大家在Windows上使用VS构建C/C++程序时,不需要自己编辑略显晦涩的Makefile文件,而对于初学者而言, 他们甚至没意识到它的存在.VS是自动生成Makefile文件, 并构建工程项目的.不可否认Visual Studio做为一款全能的IDE,它帮开发者做了很多工作,也降低了C/C++的门槛,意义非常的重大. 但作为进阶的C/C++开发者, 你是有必须了解底层编译和链接原理的. 让我们来梳理下C/C++的编译链接过程,并回顾Makefile的编写规则,最后让我们来尝试实现自动

make的使用和Makefile规则和编程及其基本命令(简单)

转自:http://blog.chinaunix.net/uid-23929712-id-2650328.html 概述: make从Makefile中文件中获取模块间的依赖关系,判断哪些文件已经过时,根据这些信息make确定哪些文件需要重新编译,然后使用Makefile中的编译命令进行编译 make命令参数详解 -C dir:在读取Makefile文件前,先切换到"dir"目录下,也就是把dir作为当前目录 -d     :make执行时打印出所有的调试信息 -e     :不允许在

很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序

很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用make更新函数库文件 后序 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出来,方便学习. 后记,看完发现这篇文章和<Linux环境下的C编程指南>

[转]makefile文件的编写规则及实例

http://xueqi.iteye.com/blog/1567866 1.一个简单的makefile例子 假设一个程序有两个文件file1.c,file2.c,每个文件都包含head.h,生成file可执行文件 file:file1.o file2.o                  附属行(文件的依存关系) gcc -o file1.o file2.o            命令行 file1.o:file1.c head.h gcc -c file1.c file2.o:file2.c

makefile的常用规则

一.前言 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 二.正文 1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器.假设我们有下面一个非常简单的源程序(hello.c): int main(int argc,char **argv) { printf("Hello Linu

Linux makefile教程之隐含规则九[转]

隐含规则 ———— 在 我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o] 文件,Windows下是[.obj]文件).本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则. “隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Makefile中没有书写这样的规则.例如,把[.c]文件编译成[.o]文件这一规则,你根本就不用写出来,ma