linux下打包qt程式
這兩天在linux環境下打包一個qt程式,廢話不多說,直接上過程。首先linux下打包qt程式需要兩個內建工具包,分别是linuxdeployqt-5-x86_64.Appimage(現在已經是6了)和appimagetool-x86_64.Appimage。
源碼位址
linuxdeploy的qtrelease包位址
appimagetools的release包位址
設定環境
下載下傳好的linuxdeployqt-5-x86_64.Appimage是一個release版的執行檔案,我們直接把它放到/usr/local/bin下面,并給他執行權限(當然也可以在bin下面給他們做一個連接配接或者直接把他們所在的檔案夾設定成系統環境)
有些高版本的linux可能沒辦法直接用,可以參考愛分享的調子啊這篇文章自己編譯使用。修改完/tools/linuxdeployqt/main.cpp之後如果cmake報錯的話也可以直接用qt打開根目錄下的.pro檔案直接用qt生成
mv liuxdeployqt-5-x86_64.Appimage /usr/local/bin/linuxdeployqt //移動到/usr/local/bin下并改名為linuxdeployqt
cd /usr/local/bin //進入bin目錄下
chmod a+x linuxdeployqt //增加執行權限
下載下傳好的appimagetool-x86_64.Appimage也做相同操作
mv appimagetool-x86_64.Appimage /usr/local/bin/appimagetool //移動到/usr/local/bin下并改名為appimagetool
cd /usr/local/bin //進入bin目錄下
chmod a+x appimagetool //增加執行權限
把要釋出的程式打包
首先把qt建構的release包移動到一個任意檔案夾(也可以不移動)如:我們現在生成的是myapp,我們把它移動到了/home目錄下面,并建立一個檔案夾名為mydir。
cd /home //進入home目錄,也可以不進入,但是如果不進入下面的myapp前面就要加上絕對路徑
mkdir mydir
mv ./myapp /home/mydir/myapp //把生成的myapp移動到mydir中(...表示myapp所在的檔案夾)
linuxdeployqt myapp -appimage //将依賴庫打包到這裡
在第二步的時候可能會出現比較多的問題,在這裡我就不一一叙述了,有什麼問題可以留言告訴我
生成之後的結構如下圖
配置檔案的修改
在最終打包之前還有幾個問題需要注意。
1.如果我們沒有用到qml子產品和自己封裝的一些庫或者非系統庫的話我們隻需要修改一個檔案就可以了,就是檔案夾中的default.desktop,在檔案的最後一行加上Categories=Office;單詞開頭大寫,最後記得加分号!!!詳情可以參考linuxdeployqt官方說明
2.如果我們要用到qml子產品,我們需要在上一步的時候就加上qml檔案夾的位置
linuxdeployqt myapp -appimage -qmldir=/home/mydir/
這個檔案夾一般情況下就是你代碼的檔案夾(包含.pro的檔案夾)
3.如果我們要用到自己封裝的庫的話用到linuxdeployqt之前需要把我們的庫檔案先拷貝到我們需要打包的檔案夾,如:cp …/…/mylib /home/mydir/。然後用linuxdeployqt打包完之後将庫檔案拷貝到新生成的lib檔案夾内,然後再qt.conf檔案中加上Libraries=lib就可以了
最終打包
最後我們在用appimagetool打包就行了
大功告成,接下來會在/home檔案夾下生成一個myapp-x86_64.Appimage,将它拷貝到其他linux系統下給它運作權限就可以直接運作了。