这是我在我的makefile中编写的代码。由于某种原因,它不允许我执行make函数。当我键入“ make findName”时,我得到“ make:'findName'是最新的。”
findName: findName.cpp
g++ -g findName.cpp -o findName;
clean:
/bin/rm -f findName *.o
backup:
#tar -zcvf bbrown.assignment4_1.tar.gz *.cpp *.h makeFile readme # will make a tar.gz
tar -cvf bbrown.findName.tar *.cpp *.sh makeFile readme
[诸如“ make:'target'是最新的消息。”表示make
已根据所涉及文件的时间戳确定不需要运行任何命令。 make
程序认为文件(和伪造目标)具有先决条件树,并且与创建文件关联的命令仅在文件不存在或时间戳比先决条件之一早时运行。在大型项目中,这有助于避免完全重建可能需要大量时间的所有内容,而实际上只更改了几个源文件:make
将确定实际需要哪些命令。但这确实需要使用正确的先决条件来设置Makefile
。
您的Makefile
指定文件findName
具有一个先决条件:findName.cpp
。如果make
成功创建了findName
,则您无需执行其他操作,只需再次键入make
,您就会看到“最新”消息:这是一项功能。如果编辑并保存findName.cpp
,然后运行make
,则应重复执行g++
命令。
但是假设您还从findName.cpp
中包含了一些头文件,例如findName.h
。如果您编辑并保存findName.h
,然后运行make
,则会得到“最新”信息,因为make
不知道findName.h
对findName
有影响。您需要添加先决条件才能解决此问题:
findName: findName.cpp findName.h
g++ -g findName.cpp -o findName
[有多种方法可以自动处理标头依赖性,但是它们可以更高级地使用make
和/或使用其他构建工具。