zoukankan      html  css  js  c++  java
  • Makefile

    0 引言

    Makefile 是代码管理工具。之所以需要Makefile是因为gcc/g++有可能会写很长很长,容易出错。所以有人提出了一种代码管理工具,Makefile,即可完成代码管理工具。

    通常Makefile是架构师写的,每个人只需要完成自己的部分即可。当然,如果能够读一点Makefile我觉得也是很有用的。

    1 编写规则

    1.1 makefile 三要素

      a. 目标  b. 依赖  c. 命令

    目标:依赖文件
      tab: 命令
    version1:
    app: main.c add.c sub.c mul.c
      gcc main.c add.c sub.c mul.c -o app
    $ make # 执行Makefile中的命令
    # 存在的问题:每次都得把所有的文件全部编译,造成时间浪费,进行修改得到version2
    version2:
    app:main.o add.o sub.o mul.o
        gcc main.o add.o sub.o mul.o -o app
    
    main.o:main.c
        gcc -c main.c
    
    add.o:add.c
        gcc -c add.c
    
    mul.o:mul.c
        gcc -c mul.c
    
    sub.o:sub.c
        gcc -c sub.c
    
    # 如果有多条规则,默认第一条中的目标为终极目标
    # 如果目标中涉及到的依赖没有,那么就继续访问Makefile找到其依赖生成的规则;通过向下检索,构建出一颗关系依赖树
    # 这种方式可以将每个程序分开进行编译,提高了程序编译的效率;其原理是通过对比 *.c, *.o 的生成时间,来自动更新依赖树,实现只重新编译被修改过的文件,提高工作效率。

    # 存在的问题:冗余

    obj=main.o add.o sub.o mul.o
    target=app
    $(target):$(obj)
        gcc $(obj) -o $(target)
    %.o:%.c
      gcc -c $< -o $@
     
  • 相关阅读:
    deepin/uos和局域网其他机器无法ping通
    Ubuntu18.04完全卸载vscode
    批量拉取github组织或者用户的仓库
    vmware uos挂载windows共享目录
    清空容器另类方式
    time_t 时间格式化字符串
    条件变量condition_variable
    C++多维堆数组定义
    arm64 ubuntu18.04 bionic安装bcc tools
    win10下载编译chromium
  • 原文地址:https://www.cnblogs.com/ghjnwk/p/13174581.html
Copyright © 2011-2022 走看看