• [linux]makefile使用


    简介:

    使用makefile记录项目各个文件的依赖关系,make程序会根据依赖关系从底层开始执行编译命令,最后生成最终目标文件。使用makefile可以方便编译多个相互依赖的源文件最终生成目标文件。

    makefile格式:

    makefile以命令为单位组成,2行组成一个命令。第一行冒号前的是本命令的目标生成文件,冒号后面是依赖文件。第二行是生成目标文件需要执行的指令,注意指令前要空TAB

    file:file1.o file2.o                  附属行(文件的依存关系)
        gcc -o file1.o file2.o            命令行
    file1.o:file1.c head.h
        gcc -c file1.c
    file2.o:file2.c head.h
        gcc -c file2.c

    makefile第一个命令是生成最终目标文件,下面的命令依次生成最终生成文件的依赖文件。比如最终目标是生成file,依赖于file1.o file2.o,此时它们还不存在。于是继续往下查找,到第二个命令需要生成file1.o,需要file1.c head.h,此时当前文件夹中包含这两个文件,于是执行gcc -c file1.c命令。最后,file1.o file2.o都生成了,便可生成最终的file。因此,makefile是从下往上回溯的。

    makefile文件必须命名为“makefile”或“Makefile”并存放于项目文件夹中。使用makefile的时候只需在项目文件夹下输入命令make即可。

    一个makefile生成两个可执行文件,并删除中间文件:

    例如,编译server_udp.c和client_udp.c生成两个可执行文件server_udp和client_udp

    all:server_udp client_udp
        #rm *.o
    server_udp:server_udp.c
        gcc  server_udp.c -o server_udp  
    client_udp:client_udp.c
        gcc  client_udp.c -o client_udp  

    all是一个虚拟的总目标,依赖于我们需要生成的两个可执行文件,由于它是虚拟的,并不需要命令操作,因此下行的命令留空即可。由于最终目标的命令是最后执行的,因此也可以用rm *.o来删除所有.o的临时文件。

    makefile功能十分强大,这里只是介绍了最基本最常用的功能而已。

  • 相关阅读:
    元旦快乐,送大家一条水晶龙
    小随笔:利用Shader实现模型爆炸和沙粒化的效果
    小随笔:利用Shader给斯坦福兔子长毛和实现雪地效果
    #UnityTips# 2017.11.14
    微软Tech Summit 2017,微软携手Unity打造MR之夜
    FixedUpdate真的是固定的时间间隔执行吗?聊聊游戏定时器
    第9期Unity User Group Beijing图文报道:《Unity实战经验分享》
    利用GPU实现无尽草地的实时渲染
    大数据学习笔记01-HDFS-集群安装
    Guava学习笔记(三):集合
  • 原文地址:https://www.cnblogs.com/iyjhabc/p/3156767.html
Copyright © 2020-2023  润新知