美文网首页
Makefile文件的编写

Makefile文件的编写

作者: XDgbh | 来源:发表于2018-07-05 12:37 被阅读13次
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    示例2

    文件夹中的各个文件
    image.png
    另一种可行方式

    先看个错误示范


    错误示范
    错误提示

    目标tcpclient的commands需要在当前文件夹中找到tcpclient.c和cJSON.o这两个文件,如果找不到,那就会报错。

    正确的方式
    image.png

    从这个可以看出,目标tcpclient写了先决条件cJSON,那就先去找有没有名叫cJSON的目标,找到了就先执行它。然后就先得到了cJSON.o这个文件,使得目标tcpclient的commands中的gcc命令得以正确执行。
    可见先决条件是指定了在Makefile文件中的其他target,而不是指的什么文件。先决条件==先执行的目标。
    all这个可有可无,起到一个总结作用。all是总目标,后面跟的小目标可以认为是先决条件。

    示例3——大量文件在一个文件夹,用all很方便

    image.png
    Makefile文件内容
    all: udpclient udpclient_errjson udpclient_truejson udpclient_originate_2call udpclient1 udpserver udpserver1 json_creat1 json_parse1 json_creat2 json_parse2
    
    udpclient: 
        gcc -o udpclient udpclient.c cJSON.c -lm
    
    udpclient_errjson: 
        gcc -o udpclient_errjson udpclient_errjson.c cJSON.c -lm
    
    udpclient_truejson: 
        gcc -o udpclient_truejson udpclient_truejson.c cJSON.c -lm
    
    udpclient_originate_2call: 
        gcc -o udpclient_originate_2call udpclient_originate_2call.c cJSON.c -lm
    
    udpclient1: 
        gcc -o udpclient1 udpclient1.c
    
    udpserver: 
        gcc -o udpserver udpserver.c
    
    udpserver1: 
        gcc -o udpserver1 udpserver1.c
    
    json_creat1: 
        gcc -o json_creat1 json_creat1.c cJSON.c -lm
    
    json_creat2: 
        gcc -o json_creat2 json_creat2.c cJSON.c -lm
    
    json_parse1: 
        gcc -o json_parse1 json_parse1.c cJSON.c -lm
    
    json_parse2: 
        gcc -o json_parse2 json_parse2.c cJSON.c -lm -std=c99
    
    • 像这种编译多个目标的,如果不用all把后面的所有目标归纳起来(去掉第一行),那么将只会编译第一个目标udpclient,而后面的那些将被忽略。由此可见all的作用。
    • 一种优化方式:不将cJSON.c文件重复编译那么多次,而是先设定一个目标编译出一个cJSON.o,然后让其他目标去使用这个目标作为先决条件。

    相关文章

      网友评论

          本文标题:Makefile文件的编写

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