make看不到变化?

时间:2010-10-22 08:37:58

标签: makefile

情景1:

我检查了一个项目,并对源文件进行了一些更改,并确实生成了,并且make看到了这些更改。

情景2:

我再次将项目检出到不同的目录(某些原因),在这里复制了修改过的源文件,并且确实没有发生任何事情,如果我运行程序,我没有看到我的更改,make看不到我对此源文件进行了更改

4 个答案:

答案 0 :(得分:4)

make使用文件的时间戳来确定要构建的内容。

也许你的版本控制系统正在用当前时间检查所有文件。当你复制你的来源时,它有一个过去的时间,让make认为目标文件(可能在你的结账时)比你的来源更新。

如果是这种情况,您可以使用touch将文件的时间戳设置为现在。

答案 1 :(得分:2)

添加现有答案:

要触摸目标,您可以使用make的-t--touch选项。此选项不会生成目标,只需触摸它,以便下次调用make时,将生成目标。

或者你可以使用-B--always-make选项,无论是否依赖于它,都会无条件地制作目标。

答案 2 :(得分:0)

好的,我刚刚触及了复制(修改过的)源代码,现在让我们识别出这些变化。

答案 3 :(得分:0)

如果您使用cp复制文件选项-a --archive -p --preserve将保留时间戳。那不是你想要的!

添加选项--no-preserve=timestamps

cp [options] --no-preserve=timestamps .....