最近在開發專案中遇到乙個很奇怪的問題:在原始檔沒有任何修改的情況下,每次使用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...