出于好奇,Makefile如何知道文件已更改(然后重新编译它)?是否达到make
?它是由编译器决定的吗?如果是这样,它是否依赖于语言?Makefile如何知道文件已更改(然后重新编译它)?
23
A
回答
22
它看起来像文件时间戳 - 很简单。如果依赖关系比目标更新,则目标被重建。
4
通过检查有关文件的信息而不是它们的内容来工作。
确定目标及其依赖项之间的依赖关系,然后查看是否存在这些文件。如果他们这样做,它会向操作系统询问上次修改文件的时间和日期。这是用于此目的的'时间戳',尽管该术语可以具有其他含义。
如果目标文件或者不存在,或者存在并且早于其依赖文件,那么Make会通过应用规则从依赖项重建目标。
如果依赖关系不存在,则表明发生错误。
这样做的结果是,您可以通过删除目标或通过'触摸'依赖关系使其晚于目标来强制重建。您可以通过“触摸”目标来避免重建。触摸只是将时间戳更新为现在。
相关问题
- 1. C Makefile - 仅重新编译已更改的文件
- 2. Makefile不重新编译头文件更改
- 3. 用于java的makefile,仅在文件更改时重新编译
- 4. 如何在更改Makefile标志时强制重新编译?
- 5. 编译器如何知道何时不重新编译?
- 6. Grails shell不重新编译已更改的文件
- 7. 如何更改已编译的.class文件而不反编译?
- 8. Mercurial hook:更改后不重新编译?
- 9. 如何强制重新编译Makefile中的单个文件?
- 10. Makefile始终重新编译
- 11. makefile - 在重新编译其他c文件时总是重新编译version.c
- 12. 如何防止SBT重新编译修改后的.class文件?
- 13. 重新编译scss文件以更改样式而不必更改它们
- 14. 如何让grails run-app重新编译文件,因为它们被更改?
- 15. 如何避免重新编译* .scala.html文件中的更改
- 16. Grunt watch&LESS - 如何让它更快? (仅编译已更改的文件)
- 17. 如何知道我正在编译的.net版本,以及如何更改它?
- 18. VS2010编译如何知道跳过未修改的文件
- 19. TableModel如何知道值已更改?
- 20. 如何知道.NET C#中的文件是否已更改?
- 21. 如何知道行是否已更新
- 22. 重新编译未更新的文件
- 23. python解释器如何知道何时编译和更新.pyc文件?
- 24. 修改makefile编译.CC和.cpp文件
- 25. 如何让浏览器知道文件已更新? ASP.NET MVC
- 26. NSTextField如何知道它的值已更改?
- 27. 如何更新已编译的文本资源文件?
- 28. 如何从Makefile获取已编译文件的列表?
- 29. 内核Makefile如何神奇地知道要编译什么?
- 30. 如何让“Makefile文件“?编译错误
还有一件事......它处理像'git'这样的变化吗?有没有可能读取该文件?谢谢:) – makeMonday
@makeMonday:我不明白你的问题。什么makefile所做的就是Clifford在你的回答中所说的。诸如保留以前文件的副本以便与最近的文件进行比较不属于“制作”作业。 –
@TheMask是的,现在我完全明白了。我读了那些时间戳。我只是想知道他们是如何工作的。谢谢;) – makeMonday