修改日期導致代碼每次都重新編譯的問題


當有多個人共用一臺機器時,一般是大型服務器,若有其中一個人把時間date往後改了,比如今天是20號,他把時間改到22號了,那麼你再編譯文件main.cpp時,生成的main.o文件就是22號的。


(問題1):當他再把時間改回到20號的時候,你又修改了main.cpp文件想重新編譯,可是文件修改時間是20號,而.o文件是22號,編譯器就忽略該修改,不編譯修改的文件。


(問題2):當你從svn更新代碼時,更新過的代碼文件修改日期爲22號的,當把時間改回20號後,這些更新過的文件每次都參與編譯,編譯器認爲這些文件是最新的。


因此修改日期是個很噁心的事,可能導致修改的代碼不編譯或者每次都編譯。解決方法是在svn更新代碼前將時間改回來,或者重新編譯修改文件前將時間改回來(或者將對應的.o文件刪掉)。


使用g++編譯文件時,對於比當前機器時間還靠前的文件會給出一條提示“main.cpp has modification time 92166 s in the future”,即這個文件在將來某個時間修改了,因此需要把這個文件的修改時間改回來。


若是用svn管理的代碼,碰上這種情況,最簡單的方法就是全部刪除,重新checkout。當然記得把自己修改尚未提交的代碼備份一下。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章