Makefile中的执行顺序

Makefile中的执行顺序,makefile,Makefile,我创建了一个makefile,我想知道makefile执行命令的顺序。有什么方法可以让我知道吗 fao: main.o high.o low.o utils.o gcc -o foo main.o high.o low.a utils.o main.o: main.c high.h utils.h gcc -c -o main.o main.c high.h utils.h high.o: high.c law.h utils.h gcc -c -o high.o hig

我创建了一个makefile,我想知道makefile执行命令的顺序。有什么方法可以让我知道吗

fao: main.o high.o low.o utils.o
    gcc -o foo main.o high.o low.a utils.o
main.o: main.c high.h utils.h
    gcc -c -o main.o main.c high.h utils.h
high.o: high.c law.h utils.h
    gcc -c -o high.o high.c low.h utils.h
low.o: law.c utils.h
    gcc -c -o low.o low.c utlls.h
utils.o: utils.c utils.h
    gcc -c -o utils.o utils.c utils.h
clean:
    -rm -f fao main.o high.o low.o utils.o
  • 我试图理解makefile的行为。告诉我我是否正确。如果我得到了所有
    *.c
    文件和
    *.h
    文件,但没有
    *.o
    文件,那么makefile将按什么顺序执行命令

  • 例如,如果我编辑
    utils.h
    并再次执行
    make
    ,那么会发生什么?这次make程序将以什么顺序执行命令


  • 1你为什么在乎?Make将按照您的依赖关系进行排序

    我不明白这个问题

    3如果编辑utils.h,则依赖于utils.h的所有内容都将重新生成。然后所有依赖于重新制作的东西都会被重新制作。在你的情况下,几乎所有的东西都将被重新制作

    请注意,您不应该在gcc命令行中包含.h文件。这是错误的(也为你修正-o)

    应该是公正的

    gcc -c -o main.o main.c 
    
    您还缺少gcc行开头的选项卡


    如果您想了解make将做什么,请尝试
    make-n
    make-d
    参见1为什么您会在意?Make将按照您的依赖关系进行排序

    我不明白这个问题

    3如果编辑utils.h,则依赖于utils.h的所有内容都将重新生成。然后所有依赖于重新制作的东西都会被重新制作。在你的情况下,几乎所有的东西都将被重新制作

    请注意,您不应该在gcc命令行中包含.h文件。这是错误的(也为你修正-o)

    应该是公正的

    gcc -c -o main.o main.c 
    
    您还缺少gcc行开头的选项卡


    如果您想了解make将做什么,请尝试
    make-n
    make-d
    参见

    我怀疑您不是指
    -0
    通常不在C编译器命令行上指定
    high.h
    utils.h
    (用于
    main.o
    等)的所有地方,但是您确实在依赖项行中列出了它们。我怀疑您不是指
    -0
    所有您通常不在C编译器命令行上指定
    high.h
    utils.h
    (对于
    main.o
    )的地方,而是在依赖项行中列出了它们。谢谢您现在已经清楚了make-n和make-d!谢谢你,现在一切都清楚了,make-n和make-d!