2012-11-19 20 views
0

这里是Linux的make文件教程:http://mrbook.org/tutorials/make/目标具有相关性,其是依赖本身不是目标

下面是一个make文件例如:

all: hello 

hello: main.o factorial.o hello.o 
    g++ main.o factorial.o hello.o -o hello 

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

factorial.o: factorial.cpp 
    g++ -c factorial.cpp 

hello.o: hello.cpp 
    g++ -c hello.cpp 

clean: 
    rm -rf *o hello 

对我来说,这条线是令人困惑的main.o: main.cpp 这是什么意思?据我所知,这意味着目标main.o具有main.cpp依赖关系。但没有目标main.cpp 这意味着一个目标(main.o)具有依赖关系(main.cpp),该依赖关系(main.cpp)本身不是目标。那么它是什么(main.cpp)?

回答

2

main.cpp文件

从扩展中,我们期望它是一个C++源文件,并且相关规则表明这种情况。

规则将在main.cppmain.o(也是一个文件)更新的任何时候执行。

+0

但这是什么意思?这意味着如果该文件存在于当前文件夹中,该目标将运行?依赖可以是一个文件?如果是,这是什么意思? –

+0

那么,我的隐形编辑涵盖了,但我会再说一遍,如果'main.o'的修改日期晚于它的任何文件依赖性(在这种情况下只有'main.cpp'),则规则将执行。 。这是make的主要用例。 – dmckee

+0

由于我不关心和依赖可能是一个目标或文件名。如果它是一个目标,它应该首先运行,如果它是一个文件名,则意味着该文件的存在是该目标运行的先决条件 –

1

main.cpp是你的源代码。 main.cpp没有目标的事实仅仅意味着Make无法生成该文件。您需要自己创建它。

+0

这意味着如果该文件存在于当前文件夹中,该目标将运行? –

+0

这意味着如果Make需要文件'main.cpp'并且它不存在,那么Make会失败,因为它不知道如何创建它。 –

相关问题