美文网首页
关于make file(1)

关于make file(1)

作者: 玻璃缸里的自游 | 来源:发表于2018-12-20 16:18 被阅读0次

    1、用于生产目标文件的自动化执行过程;基本过程是确定各源文件于目标文件间的依赖关系:

           目标文件:依赖的源文件列表

                        执行的命令

            基本例子:

            game: main.o a.o b.o

                        cc -o game main.o a.o b.o

            main.o: main.h x.h z.h

                        cc -c main.c

            a.o: a.h x.h y.h

                        cc -c a.c 

            b.o: b.h x.h y.h

                        cc -c b.c

            执行命令行一定要用Tab进行缩进开头

    2、优化make file

    1)使用变量对源文件进行优化:(方便在一处即可维护源文件的变更)

        如定义:objs = main.o a.o b.o 上例可优化为:

    game: $(objs)

            cc -o game $(objs)

    main.o: main.h x.h z.h

            cc -c main.c

    a.o: a.h x.h y.h

            cc -c a.c

    b.o: b.h x.h y.h

             cc -c b.c

      2)make的自动推导功能可以简化makefile的编写:

    只要make看到一个[.o]文件,它就会自动推导把[.h]文件加在依赖关系中,也会自动推导执行命令cc -c [.c]

     3)深入优化格式可为:

    game: $(objs)

            cc -o game $(objs) 

    $(objs): x.h

    main.o: z.h

    a.o b.o: x.h y.h

    4)通配符?~*

    3、好习惯:

    .PHONY: clean        #“.PHONY”表示,clean是个伪目标文件

    clean:

            rm game $(objs)

    4、.PHONY用于跳过隐含规则搜索改善makefile的执行性能;也用于解决不产生实际目标文件虚lable的问题:如clean,并不是一个实际要生产的目标文件,在该目录下如果存在一个clean的文件,没有.phony指定则该目标就永远不执行的问题。

    相关文章

      网友评论

          本文标题:关于make file(1)

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