大量 vcproj 構建順序管理工具的實現 一

2021-06-25 09:18:04 字數 979 閱讀 9458

1.引入問題

公司產品有大量模組(vcproj)需要在日常和出貨時構建,有乙個專門的批處理(buildorder_***.bat)去管理這些模組的構建順序,每個開發者在寫新模組後,都需要將它加入批處理檔案內某一行,這沒問題。但後續某個模組增加了對其它模組的隱式依賴(一般是使用了其它模組的匯出函式)後,如果忘記也修改 vcproj 在批處理裡的順序,就會導致編譯報錯,需要跑幾遍批處理,而且順序也不太好調整。受困於此,我們可以引入構建順序管理工具,專門用來分析和管理各模組的構建順序。

2.分析問題

如何知道模組之間的隱式依賴關係呢?

首先想到的是 solution 檔案內的專案依賴,但是如果開發者沒有設定依賴關係怎麼辦?或者兩個vcproj根本沒有在同乙個solution內怎麼辦?所以此辦法無法解決問題。

接著想到的是 dependency walker,這個軟體用來檢視模組間的隱式依賴關係,是通過分析 pe 檔案的匯入表得來,需要先有編好的可執行檔案,這個可以滿足。網上查詢到怎麼獲取pe匯入表的**如下:

hresult parsefilepedependency(lpcstr szpepath)

}while(0);

freelibrary(hmod);

return s_ok;

}

實際跑起來後,發現另乙個問題,smoddepend 會有許多 windows 自己的 dll,例如 ntdll.dll, kernel32.dll 等,還有其它的我們不關心的無原始碼的第三方庫,這些都可以排除。實際做法有兩個:

第乙個是從配置檔案內讀乙個排除列表,這個方法比較麻煩,而且維護不易,因為外部dll太多了,維護不易,廢棄。

第二個是只記在批處理內的模組輸出的可執行檔案,這個方法比較好,但需要保證所有模組不能有相同的可執行模組名(相信每個大型軟體都可以做到)。

想實現第二個辦法,需要解析批處理檔案、.sln檔案和.vcproj檔案。

QA的管理工具

這個文件模板指的是過程性文件的模板,比如說 立項報告 需求規格說明書 一直到 驗收報告 等,這些應該都有乙個統一的文件模板 包括文件的整體框架 文件的格式等等都需要規範起來。因為在專案過程中,這些文件都是需要存底作為一種驗證的,證明我做過這些事,與甲方溝通確定時必不可少 畢竟你不能最後就只拿個系統給...

常用的BUG管理工具

五大最受歡迎的bug管理系統 經過認真的查詢和比較,選出以下五大為比較受歡迎的bug管理系統。以下簡單介紹一下其功能優缺點和資源獲取方式吧 1 qc quality center 是原mercury interactive公司 現已被hp收購 生產的企業級基於web測試管理工具,需要安裝配置iis和...

管理工具webmin的學習

webmin採用b s模式 伺服器端執行於受管理的unix主機,客戶端使用web瀏覽器登入到webmin伺服器 採用http協議 perl語言編寫,平台無關性 多種語言支援和多使用者帳號支援。rpm q webmin檢視系統中是否已安裝 chkconfig list webmin檢視服務在各級別狀態...