美文网首页
Makefile使用

Makefile使用

作者: mnikn | 来源:发表于2017-03-20 22:58 被阅读680次

Makefile 简介

一个工程中的源文件不计其数,按其类型、功能、模块分别放在若干个目录中。makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作(因为makefile就像一个shell脚本一样,可以执行操作系统的命令)。

makefile带来的好处就是——“自动化编译”,一但写好,只需要一个make命令,整个工程完全编译,极大的提高了软件的开发效率。make是一个命令工具,是一个及时makefile中命令的工具程序。

make工具最主要也是最基本的功能就是根据makefile文件中描述的源程序至今的相互关系来完成自动编译、维护多个源文件工程。而makefile文件需要按某种语法进行编写,文件中需要说明如何编译各个源文件并链接生成可执行文件,要求定义源文件之间的依赖关系。

Makefile规则

我们以多个文件来示例。

// prog.c
#include <stdio.h>
#include "code.h"

int main(void)
{
    int i = 1;      
    printf ("myfun(i) = %d\n", myfun(i));
}
// code.c
#include "code.h"

int myfun(int in)
{
    return in + 1;
}
// code.h
extern int myfun(int);

Make的规则是:

test(目标文件): prog.o code.o(依赖文件列表)
tab(一个tab来隔开) gcc prog.o code.o -o test(命令)

然后我们生成Makefile文件。

test: prog.o code.o
        gcc prog.o code.o -o test
prog.o: prog.c code.h
        gcc -c prog.c -o prog.o
code.o: code.c code.h
        gcc -c code.c -o code.o
clean:
        rm -f *.o test

使用make命令执行Makefile。

make
gcc prog.o code.o -o test
gcc -c code.c -o code.o
gcc prog.o code.o -o test

./test

//清除.o和test文件
make clean

使用宏

Makefile还可以定义和使用宏(也称做变量),从而使其更加自动化,更加灵活,在Makefile中定义宏的格式为:

macroname = macrotext

使用宏的格式为:

$(macroname)

上面的Makefile改为使用宏

OBJS = prog.o code.o
CC = gcc

test: $(OBJS)
        $(CC) $(OBJS) -o test
prog.o: prog.c code.h
        $(CC) -c prog.c -o prog.o
code.o: code.c code.h
        $(CC) -c code.c -o code.o
clean:
        rm -f *.o test

相关文章

  • Linux Kernel Makefiles特殊符号

    Makefile基本规则: Makefile文件中可使用特殊的符号简化Makefile文件的书写。 1、$@:表示...

  • Makefile 学习

    Makefile 一、Makefile 简单使用 Makefile是Linux系统下的一种编译脚本,更快、更方便的...

  • Makefile

    在使用Makefile 编译多个c文件时,出现 Makefile:2:*** missing separator....

  • Makefile的基本使用

    Makefile的基本使用 首先需要有一个Makefile文件然后执行make即可完成所有的Makefile中定义...

  • Makefile简笔记

    一、Makefile 变量 #Makefile变量的使用 objects = main.o input.o cal...

  • Makefile使用

    Makefile 简介 一个工程中的源文件不计其数,按其类型、功能、模块分别放在若干个目录中。makefile定义...

  • Mac 下 makefile编译使用

    依据makeFile文,编译包使用make命令,makefile文件所在目录下 文章:https://www.cn...

  • GitLab CI 实现 Golang 自动构建为 Docker

    实现目标 提交代码自动构建,自动打包为docker镜像 前期准备 Makefile 学习并使用 MakeFile ...

  • 迅为i.MX6ULL开发板按键例程编译及运行

    我们使用命令“vi Makefile”进入Makefile。如图 1所示: 添加内容如下。 第2行TARGET修改...

  • 添加软件包 IPK

    一个实际的Makefile 引入文件 OpenWrt 使用三个 makefile 的子文件,分别为: includ...

网友评论

      本文标题:Makefile使用

      本文链接:https://www.haomeiwen.com/subject/tyzinttx.html