為啥QT creater發布exe如此麻煩?

需要先改成release版,然後把exe複製出來,添加一大堆dll進去,就算這樣還是各種問題,為啥不能像VB,MFC等一鍵發布? 一個編程軟體,在編寫程序時很簡單,release時如此麻煩,令人難以理解。。。。。


原因很簡單啊……VB、MFC並不是沒有依賴庫,只不過人家有親爹,把依賴庫直接裝在操作系統里了……

但其實那些依舊是第三方庫,而不是系統庫,所以直接發布裸奔的exe同樣有坑……你打開控制面板,添加刪除程序,有沒有找到一大堆Microsoft Visual C++ xxxx Redistributable?這就是VS的依賴庫,類似Qt5.5的庫打包,然後QT5.3的庫打包,然後QT4.8的庫打包,等等……

有時裝點老遊戲,不是經常要附加安裝Microsoft Visual C++ 2008 Redistributable么?如果是steam,新下載遊戲第一次啟動時不就在做這個事么

只不過微軟是親爹啊……所以這些依賴包大多都集成在系統里了,就不需要你另外去發布了

另外,在xp之前,98時代,dll地獄是很可怕的事……那時發布MFC程序,經常也是要自帶DLL的,不然用系統path裡面的,可能會因版本不同跑不起來,那時很多同名不同版本不同介面的庫,混用很嚴重,當時最愛說的兼容性問題就是指這個。

XP以後有所好轉,庫的命名有時也帶版本號了,但依舊有坑。現在我做的項目里就有過這種事。各個項目依賴的VC庫,從MSVCRT90.dll到MSVCRT120.dll,有四五個版本,你要是不自己拷貝打包發布,直接把exe扔給用戶的話,等著被投訴吧……

另外,如果你是嫌要手動拷依賴庫麻煩的話……建議讀一讀Qt文檔的「Variables」頁面,你可以在pro文件里寫QMAKE_POST_LINK語句,該語句會在鏈接完畢後執行。然後你通過這個語句可以從%{QTDIR}里把需要的庫拷貝到你的編譯目錄,於是編譯時就自動完成發布工作了

最後,Qt也有自動發布機制的,就在官網的下載頁面Qt - Download Open Source Step 3

裡面有一個Index of /official_releases/qt-installer-framework

這東西就是製作Qt程序的安裝包的,依賴問題、發布問題都能幫你直接搞定


自己寫個腳本啊!


推薦閱讀:

數學學習中有哪些必須掌握的數學符號?以及其簡單的介紹。
參加NOIP普及組需要哪些知識儲備?
Bug 為什麼不能徹底消除?
熟練使用vim是一種怎樣的體驗?
學習一門新技術是先看文檔再實際應用還是直接看別人的應用案例學習如何使用這個技術?

TAG:計算機 | QtC開發框架 | 計算機語言 | 軟體編程 | C編程 |