Makefile文件的写法

gcc编译步骤:

预编译——>  编译——> 汇编——>连接——>

Make工具:在大型项目中有成百上千个源文件,Make工具是为了解决每次都通过手工输入gcc命令进行编译带来的非常不方便的问题 。

Makefile文件:是描述文件依赖关系的说明,由若干个规则组成。

Makefile规则格式:

    目标:依赖关系

    <tab键>命令

  举个栗子

    all:hello.o

      gcc hello.o -o hello

    hello.o:hello.c

      gcc -c hello.c -o hello.o

    clean:

      rm *.o hello

  引入变量改进后

    CC=gcc

    OBJECT=hello.o

    all:$(OBJECT)

      $(CC) $(OBJECT) -o hello

    $(OBJECT):hello.c

      $(CC) -c hello.c -o $(OBJECT)

    clean:

      rm *.o hello

     CC=gcc

     TARGET=all

     OBJECTS=m.o visit.o listen.o watch.o study.o play.o

     $(TARGET):$(OBJECTS)

       $(CC) $(OBJECTS) -o m

     m.o:m.c m.h

       $(CC) -c m.c -o m.o

     visit.o:visit.c

       $(CC) -c visit.c -o visit.o

     listen.o:listen.c

       $(CC) -c listen.c -o listen.o

     watch.o:watch.c

       $(CC) -c watch.c -o watch.o

     study.o:study.c

       $(CC) -c study.c -o study.o

     play.o:play.c

       $(CC) -c play.c -o play.o

     clean:

       rm *.o



Makefile预定义变量



[email protected]  规则的目标所对应的文件名

$<  规则中的第一个依赖文件名

$^  规格中所有依赖的列表,以空格为分隔符

$(@D)目标文件的目录部分(如果目标在子目录中)

$(@F)目标文件的文件名部分(如果目标在子目录中)



     CC=gcc

     TARGET=all

     OBJECTS=m.o visit.o listen.o watch.o study.o play.o

     $(TARGET):$(OBJECTS)

       $(CC) $^ -o m

     m.o:m.c m.h

       $(CC) -c $< -o [email protected]

     visit.o:visit.c

       $(CC) -c $< -o [email protected]

     listen.o:listen.c

       $(CC) -c $< -o [email protected]

     watch.o:watch.c

       $(CC) -c $< -o [email protected]

     study.o:study.c

       $(CC) -c $< -o [email protected]

     play.o:play.c

       $(CC) -c $< -o [email protected]

     clean:

       rm *.o

 进一步改进:

     CC=gcc

     TARGET=all

     OBJECTS=m.o visit.o listen.o watch.o study.o play.o

     $(TARGET):$(OBJECTS)

       $(CC) $^ -o m

     *.o:*.c

       $(CC) -c $< -o [email protected]

     clean:

       rm *.o


    

时间: 2024-08-28 01:21:52

Makefile文件的写法的相关文章

简介make命令和makefile文件

一.为什么要用到 make 命令和 makefile 文件 在 Linux 下编写一个程序,每次编译都需要在命令行一行一行的敲命令.如果是一个很小的程序还好说,命令不怎的复杂,编译速度也挺快,但是对于大型程序来说,这样无疑很麻烦,且不说可能会敲错命令,有时候仅仅改动了一个小地方,却需要将整个程序全部重新编译一遍,显然很浪费时间.Linux 提供了 make 命令来解决上述问题,它会在必要时重新编译所有受改动影响的源文件.同时,还提供了一个 makefile 文件,它告诉 make 命令如何构建应

makefile文件写法解析

一个makefile文件如下: # this is a makefile #这一行是注释 NAME = MemInfo.exe #下来这几行是宏定义,相当于linux的变量 OBJS = $(NAME).obj RES = $(NAME).res LINK_FLAG = /subsystem:windows ML_FLAG = /c /coff $(NAME): $(OBJS) $(RES) #这一行指出最终生成的exe文件依赖哪些obj和res文件 Link $(LINK_FLAG) $(OB

多文件工程的编译-Makefile的简便写法

通常我们在命令行使用GCC对程序进行编译,如果对于单个或者几个文件时比较方便的,但当工程中的文件逐渐增多甚至变得十分庞大的时候,使用GCC显然力不从心,不好管理.因此我们有必要编写一个Makefile来对工程进行管理.就以下工程目录进行学习. 生成可执行程序cacu,建立如下规则的Makefile文件. #生成test,":"左边为目标,右边为依赖 .gcc后是命令 cacu:add_int.o add_float.o sub_int.o sub_float.o main.o gcc

Cocos2dx-Android 之Makefile通用高级写法

不废话,直接贴,节约时间.需要改进的地方请各位指出,共同学习. LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := cocos2dcpp_shared LOCAL_MODULE_FILENAME := libcocos2dcpp ############################################################################### ##############

Linux内核Makefile文件(翻译自内核手册)

转载自:http://www.cnblogs.com/jason-lu/p/3728198.html --译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 This document describes the Linux kernel Makefiles 本文当介绍了Linux内核的Makefile === Table of Contents=== 目录

QT中.pro文件的写法

QT中.pro文件的写法   qmake 变量 含义 #xxxx 注释, 从“#”开始,到这一行结束 SOURCES 指定源文件 SOURCES = *.cpp 对于多源文件,可用空格分开 SOURCES = 1.cpp 2.cpp 3.cpp 或者每一个文件可以被列在一个分开的行里面,通过反斜线另起一行 SOURCES = hello.cpp \ main.cpp 一个更冗长的方法是单独地列出每一个文件,就像这样 SOURCES += hello.cpp SOURCES += main.cpp

单文件夹下的C程序如何编写Makefile文件

通过学习已经学会了GCC的一些基础的命令,以及如何将C语言源代码编译成可执行文件. 我们已经知道在linux环境下编译源码时,常会有以下三个步骤: ./configure make make clean 执行./configure时,会检查系统的配置等,得到相关的有用的信息,生成Makefile文件. 执行make命令时,make命令解释Makefile文件中的规则,生成目标文件. 执行make clean会删除生成目标文件过程中的生成的中间文件. Makefile文件是可以由我们手工建立的:接

【LINUX网络编程】Makefile文件

<Linux网络编程>(第二版) 第2章的一些读书笔记 ↓ Makefile:在一个含有较多文件的工程中,定义一系列规则来指定编译文件的顺序,可用于管理工程. Makefile指定了工程中的哪些源文件需要编译以及如何编译.需要创建那些库文件以及如何创建这些库文件.如何最后产生我们想要的可执行文件.为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令,整个工程就完全自动编译. 首先来看一下Linux

例解 autoconf 和 automake 生成 Makefile 文件

转自:http://www.ibm.com/developerworks/cn/linux/l-makefile/ 引子 无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项 目开发还是安装应用软件,我们都经常要用到make或 make install.利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系. 但是如