当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Linux里Makefile是什么?它是如何工作的?(3)

    栏目:Linux/apache问题 时间:2019-12-28 14:07

    如上所示,% 被 foo 替换掉了。$< 被 foo.o 替换掉。$<用于匹配预置条件,$@ 匹配目标。对 ${BINS} 中的每个值,这条规则都会被调用一遍。
    规则:

    %.o: %.c
    @echo "Creating object.."
    ${CC} -c $<
    

    之前规则中的每个预置条件在这条规则中都会都被作为一个目标。下面是展开后的内容:

    foo.o: foo.c
    @echo "Creating object.."
    gcc -c foo.c
    

    最后,在 clean 目标中,所有的二进制文件和编译文件将被删除。
    下面是重写后的 Makefile,该文件应该被放置在一个有 foo.c 文件的目录下:

    # Usage:
    # make # compile all binary
    # make clean # remove ALL binaries and objects
    .PHONY = all clean
    CC = gcc # compiler to use
    LINKERFLAG = -lm
    SRCS := foo.c
    BINS := foo
    all: foo
    foo: foo.o
    @echo "Checking.."
    gcc -lm foo.o -o foo
    foo.o: foo.c
    @echo "Creating object.."
    gcc -c foo.c
    clean:
    @echo "Cleaning up..."
    rm -rvf foo.o foo
    
    

    这些和到一起,就是makefile,当然这些功能还太少,可以加上很多别的项目。但宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对IIS7站长之家的支持。如果你想了解更多相关内容请查看下面相关链接