Linux-makefile写法

本文出自svtter.github.io

本文可以随意转载,但是转载请保留本信息.

makefile写法有复杂的有简单的,我这里提到的主要为了做一些简单的开发,所以还是说些简单的事情。

使用makefile之前,要学会使用bash的一些东西。鸟哥的私房菜虽然说是介绍Linux,但是总感觉很多都是介绍bash,以及和

bash配合使用的一些命令。。。

变量的写法

  • 定义的时候直接使用VAR = main.o即可这种格式即可
  • 使用的时候使用${VAR}这种形式来使用,类似于php中的变量。

另外, 位于makefile外面的变量也是可以使用的,使用的时候使用如下格式VAR = main.o make即可,这样就相当于在makefile

定义了一个VAR变量。在外定义的变量是优先于makefile里面的变量的,就像是一个预订义的函数一般。

此外,$@表示当前的目标。如果在clean那里面,$@指的是clean

make + 命令写法

  • 比如make clean的写法,就是在makefile文件中添加

    clean:

    rm .. (类似bash的使用方法,这个地方也可以使用变量)

相对的,install等等的方法就类似于这个上面的写法了。

写到这里也是明白了为什么vim里面有个make命令,却没有各种编译命令了= =

然后附加一个自己写的第一个makefile:(为了读者更加容易理解,我没有使用变量)

run: t2.o test.o
    cc -o run test.o t2.o
    ./run
test.o: test.c
    cc -c test.c
t2.o: t2.c
    cc -c t2.c
clean:
    rm *.o
    rm run

test.c:

#include <stdio.h>
/* #include "t2.h" */
typedef struct test
{
    int a, b;
}test;
test b;
int main(int argc, const char *argv[])
{
    output();
    b.a = 1;
    b.b = 2;
    printf("%d %d\n", b.a, b.b);
    return ;
}

t2.c:

#include <stdio.h>
void output()
{
    printf("This function is in t2.c\n");
}

文件目录是:

– file

– makefile

– test.c

– t2.c

  • 使用make可以创建链接文件并且运行。
  • 使用make clean可以删除生成的文件。