• Makefile编写学习摘要


    windows的.lib跟Unix的.a一样,属于中间级。

    .o跟Windows的对象一样,是编译后的文件,需要连接起来(LINK),之后才是可执行文件。

    clean:一般是make clean ,删除中间的目标文件,.o之类。可以叫别的名字,指示动作用,可以自己定义操作,打包make uImage意思应该就是makefile下定义了一个叫uImage的?

    edit : main.o kbd.o command.o display.o /
    insert.o search.o files.o utils.o
    cc -o edit main.o kbd.o command.o display.o /
    insert.o search.o files.o utils.o
    ##反斜杠(/)是换行符的意思
    main.o : main.c defs.h
    cc -c main.c
    kbd.o : kbd.c defs.h command.h
    cc -c kbd.c
    command.o : command.c defs.h command.h
    cc -c command.c
    ...
    utils.o : utils.c defs.h
    cc -c utils.c
    
    clean :
    rm edit main.o kbd.o command.o display.o /
    insert.o search.o files.o utils.o

    以上代码也可以称为Makefile,写起来麻烦但是清楚,对于工程小不想装13的可以直接这么写。

    如果,突然想加个新的.o,凡是与其相关,都必须要补上对应关系的.o,漏了就make失败,为了方便Makefile的修改工作,有了Makefile的变量(类似C中的宏),叫OBJ,obj,objs,objects...之类。。。(好像没啥区别)

    objects = main.o kbd.o command.o display.o /
    insert.o search.o files.o utils.o
    edit : $(objects)
    cc -o edit $(objects)
    ........
    utils.o : utils.c defs.h
    cc -c utils.c
    clean :
    rm edit $(objects)

    然后,make识别XX.o的依赖文件就是XX.c,(.o & .h)再一起被make自动推倒(导),将其收拢起来,变得更加简洁。于是:

    objects = main.o kbd.o command.o display.o /
    insert.o search.o files.o utils.o
    
    edit : $(objects)
    cc -o edit $(objects)
    
    $(objects) : defs.h
    kbd.o command.o files.o : command.h
    display.o insert.o search.o files.o : buffer.h
    ##.PHONY意思表示clean是一个“伪目标”,。而在rm命令前面加了一个小减号的意思就是,也许某些文件出现问题,但不要管,继续做后面的事。
    .PHONY : clean
    clean :
    -rm edit $(objects)

    要指定特定的Makefile,你可以使用make的“-f”和“--file”参数,如:make -f Make.Linux或make --file ARMakefile

    引用makefile 使用 include <filename>

    1、如果make执行时,有“-I”或“--include-dir”参数,那么make就会在这个参数所指定的目录下去寻找。
    2、如果目录<prefix>/include(一般是:/usr/local/bin或/usr/include)存在的话,make也会去找。

    //引用自http://blog.csdn.net/liang13664759/article/details/1771246

  • 相关阅读:
    com.panie 项目开发随笔_前后端框架考虑(2016.12.8)
    Jsoup 使用教程:数据抽取
    Jsoup 使用教程:输入
    项目中图片处理总结
    jsonp 跨域请求
    由Memcached升级到 Couchbase的 Java 客户端的过程记录(三)
    由Memcached升级到 Couchbase的 Java 客户端的过程记录(二)
    jquery eval解析JSON中的注意点介绍
    JS禁止WEB页面鼠标事件大全
    jQuery事件之鼠标事件
  • 原文地址:https://www.cnblogs.com/Viewsky/p/4432649.html
Copyright © 2020-2023  润新知