情景1:
我检查了一个项目,并对源文件进行了一些更改,并确实生成了,并且make看到了这些更改。
情景2:
我再次将项目检出到不同的目录(某些原因),在这里复制了修改过的源文件,并且确实没有发生任何事情,如果我运行程序,我没有看到我的更改,make看不到我对此源文件进行了更改
答案 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 .....