makefile上的行顺序

时间:2012-04-05 13:11:14

标签: makefile gnu-make

我有main.cpp(包括main函数)和func1.cpp,我想用makefile链接这些文件。经典表格将是:

main: main.o func1.o
    g++ main.o func1.o -o main
main.o: main.cpp
    g++ -c main.cpp
func1.o: func1.cpp
    g++ -c func1.cpp

或者可以写

main: func1.o main.o 
    g++ main.o func1.o -o main
func1.o: func1.cpp
    g++ -c func1.cpp
main.o: main.cpp
    g++ -c main.cpp

main: main.o func1.o
    g++ main.o func1.o -o main
func1.o: func1.cpp
    g++ -c func1.cpp
main.o: main.cpp
    g++ -c main.cpp

最后两个与经典的不一样吗?一个人比另一个人有一些优势吗?

2 个答案:

答案 0 :(得分:0)

不,规则的顺序发挥作用的唯一时间是您只需输入make,在这种情况下,它可以选择第一个规则作为默认值。

除此之外,make足够智能,无论文件位于何处,都可以执行相关规则。

答案 1 :(得分:0)

三组ruls之间没有区别。但是,make知道如何将.cpp文件构建到目标文件中,因此您真正需要的是:

main: main.o func1.o
        g++ main.o func1.o -o $@