0

我有 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

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

4

2 回答 2

0

不,规则的顺序只有在您输入时才会起作用make,在这种情况下,它可以选择第一条规则作为默认规则。

除此之外,make它足够智能,可以执行依赖规则,无论它们在文件中的什么位置。

于 2012-04-05T13:21:02.987 回答
0

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

main: main.o func1.o
        g++ main.o func1.o -o $@
于 2012-04-05T14:38:48.813 回答