创建 makefile 文件编译程序

先了解一下背景知识(个人理解)。

  • makefile 文件是什么 ?
    Makefile 可以简单的认为是一个工程文件的编译规则,描述了整个工程的编译和链接等规则。

  • 为什么要创建 makefile ?
    如果需要编译的文件较少,可以一个一个编译。但是如果需要编译的文件较多,这样就需要用到 makefile 文件。

  • 为什么我们平时运行程序不需要写 makefile ?
    我们使用的集成开发软件 (VS, Matlab 等等)已经创建好了。

C 语言示例

简单起见,本文从一个 C 语言的例子展开,讲讲 makefile 文件的创建。

文件列表:

  • main.c
  • max.c
  • max.h
  • min.c
  • min.h
  • makefile

文件已经放在了公众号后台,回复的关键词在文章结尾。

main.c

# include <stdio.h>
# include "max.h"
# include "min.h"

// main function
int main(int argc, char* argv[])
{
    int a = 5;
    int b = 3;
    int maxNum= max(a,b);
    int minNum = min(a,b);
    printf("Two numbers a, b:\t");
    printf("%d\t%d\n", a,b); 
    
    printf("The max value is %d\n The min value is %d\n",maxNum,minNum);
    return 0;
}

max.c

// function max
# include "max.h"

int max(int a,int b)
{
        if(a>=b)
        {
                return a;
        }else
        {
                return b;
        }
}

max.h

int max (int a, int b); 

min.c

# include "min.h"

int min(int a,int b)
{
        if(a<b){
                return a;
        }else{
                return b;
        }
}

min.h

int min(int a, int b); 

makefile 文件创建

注意文件名只能为 makefile 或 Makefile, 且没有后缀。
makefile

# comment after '#'
#tab seperation

#this is  make file
CC = gcc //assignment
main: main.c max.o min.o // name: compiling files
    $(CC) main.c max.o min.o -o main // begins with Tab!

max.o: max.c
    $(CC) -c max.c -o max.o
    
min.o: min.c
    $(CC) -c min.c -o min.o
    
clean:
    rm *.o main

主程序一定要放在最前面。
$(CC) 前面是 Tab 键,不是空格。

打开 Mac 终端或者 win10 shell,更改到当前文件夹 (cd)

cd your-directory-path

输入 make

make

会编译出 main 文件 (这个例子里面没有后缀),然后输入

./main

以上就是输出的结果。
运行出结果后,会有 .o 等中间文件,最后可以用命令 make clean 删除掉。

make clean

删除所有 .o 文件以及文件 main

在我的微信公众号 (柯庆华) 后台回复 makefile 可以获取文中使用到的文件。

参考文章

https://blog.csdn.net/hanlicun/article/details/79127166

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容