visual studio 編譯之原始檔時間戳問題

2022-09-15 00:24:25 字數 1541 閱讀 2325

最近在開發專案中遇到乙個很奇怪的問題:在原始檔沒有任何修改的情況下,每次使用visual studio(2020預覽版)啟動程式除錯前,專案都會被重新編譯一遍。這一度讓我懷疑是最新版本預覽版ide的隱藏的問題,但是仔細思考又不太可能,於是基於乙個沒有出現這個問題的commit建立新的測試分支,對比驗證沒有出現類似問題,排除ide的問題。最終對比commit提交歷史,發現端倪,定位問題根本原因是引入的新庫檔案時間戳出現問題。(舊版本nuget-4.1.0打包工具在最新的visual studio 2019和2022下解包庫相關檔案時間戳出現問題,使用最新的nuget-5.1.0版本無此問題)

build solution : 執行增量型構建。如果編譯器認為**檔案未改變,就不會重寫編譯;否則需要進行編譯。

clean solution : 刪除所有之前編譯的檔案。

rebuild solution :  刪除所有之前編譯的檔案,即:clean;然後重寫編譯,不管**檔案是否由更改。

新建乙個源**檔案*.h;*.cpp並新增**:

build後的*.obj檔案時間戳如下:

修改後編譯的原始碼檔案:

構建生存的物件檔案:

檔案不做任何修改,進行build:

clean前:

clean後:

*.exe和*.obj檔案被刪除。

前:後:

未進行重寫編譯。

前:後:

第一次build:

第二次build:

只有**檔案修改時間戳在當前系統時間戳前,不管是否修改原始檔,都會認為檔案被修改,重寫編譯。

前:後:

不會被重寫編譯。

visual studio之預編譯頭

之前在一公司實習時,每天早上一上來就是更新 編譯 整個sln編譯一次,在我那機器上,算了下時間,接近3個小時.什麼概念,就是早上9點半上班,等編譯完後,可以去午睡了.後來實在受不了,上網找了新增預編譯頭的方法,在工作群裡吶喊了下,無人鳥我.當實習生的痛苦啊.做畢設開始沒想到加編譯頭,不過 越寫越是多...

Visual Studio 編譯選項

control flow guard 鏈結優化選項。opt ref將剔除未使用的函式與變數,減小最終二進位制檔案的大小。opt icf對相同的comdat進行摺疊。use icf iterations to perform identical comdat folding 要除錯 release 版...

使用visual studio編譯OPAL

編譯過程可以參考一下兩篇文章,建議使用vs2017,避免一些不必要的麻煩。首先開啟opal專案下的plugins資料夾 開啟plugins 2017.sln 找到解決方案下面的video工程集 要想編譯這些檔案,還需要有ffmpeg的庫支援 從專案屬性頁我們可以發現,原作者在編譯的時候是新增了ffm...