日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT跨平台项目开发经验(项目打包)

發布時間:2024/7/19 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT跨平台项目开发经验(项目打包) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.代碼編寫
1.1 代碼編寫簡短,代碼運行效率高,適當注釋。一般一個大型的項目,代碼的運行效率要求較高,一般需要秒級響應,甚至毫秒級。
1.2 建議使用命名空間::的形式來訪問該命名空間中的變量和函數,這樣可以減少把該命名空間中所有的東西都導入到當前項目中,有利于節省系統資源。

std::string s;

1.3 C++ STL的使用
多使用STL中的數據結構和相關算法,一般這些數據結構和算法都能很好的滿足需求,而且相關算法的效率也很高。

double Max = DBL_MAX;//double中的最大值 std::map<std::string,std::vector<std::string>> Map; std::vector<std::string>::size_type i=0;//vector中通過下標訪問是,下標的類型 std::vector<std::string>::iterator it;//迭代器,通過迭代器來操作;

1.5 判斷兩個文件的內容是否完全相同,可以計算文件的MD5碼,若MD5碼相同,則文件的內容完全相同。這在處理很多具有重復的文件的時候,為文件的復用,可以根據MD5碼來復用數據,可以提高文件處理的效率。

1.6 文件目錄的遍歷

//在windows中,主要通過 intptr_t 和 _finddata_t 結構和 函數_findfirst(),_findnext()和_findclose()來遍歷文件和子文件夾下的文件。 #include<io.h>intptr_t handle; _finddata_t fileInfo;handle = _findfirst((dir + "*"),&fileInfo);//查找目錄dir下的文件或子目錄,通過"*"來匹配文件或文件夾,可以通過"*.txt"來匹配dir下所有的.txt文件; do {if(fileInfo.attrib & _A_SUBDIR)//是一個文件目錄{if (strcmp(fileInfo.name,".")==0 || strcmp(fileInfo.name,".."))//排除這兩個目錄{continue;}else{//找到子目錄,做路徑拼接std::string Path = dir + fileInfo.name + '\\';...}}else//是一個文件{} }while(_findnext(handle,&fileInfo)==0); _fincclose(handle); //在Linux中主要通過結構struct stat 和struct dirent和函數lstat(),opendir()和 S_ISDIR()來遍歷目錄 #include<dirent.h> #include<sys/stat.h>struct stat s; lstat(dir.c_str(),&s); if(!S_ISDIR(s.st.mode))//不是一個目錄 {return} struct dirent* fileInfo; DIR* openDir = opendir(dir.c_str()) if (openDir == NULL)//無法打開目錄 {}while((fileInfo = readdir(openDir)!= NULL{if (strcmp(fileInfo->d_name,".")==0 || strcmp(fileInfo->d_name,".."))//排除這兩個目錄{continue;}else{struct stat child;lstat((dir+fileInfo->d_name).c_str(),&child);if(S_ISDIR(child.st_mode))//死一個文件夾{std::string Path = dir + fileInfo->d_name + '/';...}else//是一個文件{//可以根據文件名來判斷文件的類型,選擇出指定后綴名的文件;}} }

2.代碼管理
2.1 團隊合作開發一個大型項目,為了方便項目的合并,調試運行等,需要對項目進行版本控制,可以通過svn來進行代碼版本的管理;在windows中安裝svn,可以方便的對代碼提交過程中的沖突和代碼的合并,以及代碼的比較,找出版本之間的區別等,避免使用linux的命令的麻煩。

2.2 重服務器上更新下來的代碼,在QT中需要先執行qmake,使別人修改的.pro的配置文件生效,在編譯運行。

2.3 通過BCompare軟件對兩個版本的項目文件夾進行內容的比對,需要取消時間戳,不比較時間戳。可以方便代碼的合并,對自己編寫的比分踐行合并,若存在多人編寫的代碼產生交叉的情況,需要商量之后在進行代碼的合并。

2.4 代碼的更新

在linux中,代碼的跟新,進入到項目工程文件夾,通過svn up命令來更新;在windows中直接右鍵,可以更新或提交代碼到服務器。

3.QT跨平臺開發
3.1 在QT中進行項目開發,需要滿足夸平臺的需求時,需要我們在windows和linux下能正確運行代碼,需要在windows和linux下進行代碼的調試運行。

3.2 可以通過虛擬機來創建出一個linux系統,通過MobaXterm軟件來實現windows和linux之間代碼的互傳;

3.3 編碼問題
(1) 夸平臺開發涉及到很多問題,最典型的就是系統的編碼的統一,windows中使用的gbk編碼,linux中使用的是utf-8編碼。比如在涉及到文件的讀寫問題上,涉及到路徑等問題時,就會出現問題。

(2) 在windows中.cpp文件采用的是gbk編碼,在linux中,.cpp一般采用utf8編碼,如果把windows中的路徑直接復制(連編碼格式都復制)到 linux .cpp文件中,那么路徑就會出現亂碼;

(3) 為了解決編碼問題,需要為所有的函數參數和返回值使用統一編碼,建議使用utf-8編碼,std::string就是utf-8編碼格式的,通過使用std::string來進行參數傳遞,若在某個函數中需要使用其他編碼,則臨時進行轉換,結果在轉換成utf8返回。總之,項目中數據的流動都采用統一的編碼,否則,在后期項目開發過程中,出現編碼問題,這修改起來變得很困難,因為一個參數可能出現多種編碼混合在一起的情況,不管如何轉碼,都錯誤。

(4) 還需要明白我們調用不是自己開發的函數時,它接收的參數的編碼是什么,windows中一般都是GBK編碼,linux中是utf8編碼的,因此在傳入實參是,需要保證編碼的正確。

3.4 QT跨平臺開發,涉及到在不同的系統需要導入不同的庫,或者使用不同系統的函數,則可以通過如下方式來實現。

#include <QtGlobal>//需要導入這個庫,這里面定義了宏 #ifdef Q_OS_LINUX#include <dirent.h>#include <sys/stat.h>//linux系統的庫 #elif defined Q_OS_WIN#include<io.h> //windows中的庫 #endif//函數 void fun() { #ifdef Q_OS_LINUX//編寫LINUX代碼 #elif defined Q_OS_WIN//編寫windows代碼 #endif}

4.動態鏈接庫的編寫
4.1 在項目中涉及到很多動態鏈接庫的時候,可創建一個總的動態鏈接庫,把所有的其他的動態鏈接庫放到它的下面作為它的子項目,這樣在qmake和編譯的時候,只需要對總的動態鏈接庫做操作,而不需要對每個都做操作。

4.2 數據交互

  • 在進行數據交互的過程中,可以選擇xml或者json格式來進行交互,采用開源的JSON和tinyxml庫來進行數據的讀寫,可是很快的寫出正確的數據格式。
  • xml數據格式與Json數據格式及其格式驗證工具
    在進行數據交互的時候,我們需要對JSON或xml的格式進行驗證,確保格式正確,可以采用線上驗證工具來進行驗證。

5.項目的打包發布
5.1 通過編輯器編譯出一個Release版本的.exe文件,然后把.exe復制到一個空的文件夾,打開qt的命令行工具,注意選擇對應的命令行工具,進入到.exe所在的目錄,然后通過 windeployqt xxx.exe(加項目名稱)命令即可在文件夾下生成.exe 運行依賴的文件,然后將整個文件夾打包即可在其他平臺運行。

總結

以上是生活随笔為你收集整理的QT跨平台项目开发经验(项目打包)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久天堂影院 | 夜夜操夜夜爱 | 久久久少妇 | 日韩av不卡在线播放 | 免费看成人aa片无码视频羞羞网 | 亚洲国产精一区二区三区性色 | 亚洲区国产区 | 亚洲毛片网 | 免费在线播放黄色片 | 久久久久久久久免费视频 | 无码日韩精品一区二区 | 3344av| 久久99热精品 | 老王66福利网 | 久草视频免费在线 | 色窝av| 国模少妇一区二区 | 中文字幕在线观看高清 | 欧美一区二区三区公司 | 精品人妻伦九区久久aaa片 | 五月天激情综合 | 黄色网页免费在线观看 | 天天干夜夜撸 | 熟妇人妻中文av无码 | 夜夜嗨av一区二区三区 | 91桃色视频 | 永久黄色网址 | 王者后宫yin肉h文催眠 | 免费人成在线观看网站 | 亚洲1234区| 四虎影视免费在线观看 | 五月天开心网 | 一区二区在线视频观看 | 天堂а√在线最新版中文在线 | 精品国产亚洲一区二区麻豆 | 女十八毛片| 亚洲少妇色 | 欧美极品一区二区三区 | 91国语对白 | 99爱国产| 尤物视频在线观看国产 | 国产午夜麻豆影院在线观看 | 免费在线看黄色 | 日本精品视频一区二区三区 | 91国偷自产一区二区三区观看 | 亚洲av无码一区二区二三区 | jizz性欧美17 | 黄色免费网站 | 中国国产毛片 | 艳妇乳肉豪妇荡乳 | 国产成人三级在线 | 91在线视频精品 | 欧美黑人孕妇孕交 | 亚洲黄色精品视频 | 草草影院网址 | 99伊人网| 欧美成人高清 | 黄色第一网站 | av无码一区二区三区 | 污av| 一区二区三区不卡在线 | 少妇免费毛片久久久久久久久 | 国产精品天天干 | 黑丝久久 | 插女生下面 | 日韩国产欧美一区二区三区 | 理论片一级 | 国产看片网站 | 国产做爰免费视频观看 | 怎么可能高潮了就结束漫画 | 午夜影院久久 | 一级片免费在线播放 | 午夜影院免费观看 | 日韩天天| 国产卡一卡二卡三无线乱码新区 | 国产精品国产三级国产普通话蜜臀 | 日韩乱码一区二区三区 | 领导揉我胸亲奶揉下面 | 篠田优在线观看 | 国产特黄大片aaaa毛片 | 69人人| 中文字幕一区二区免费 | 日韩一区二区三区四区五区 | 日韩激情啪啪 | 69av网| 国内自拍青青草 | 91在线欧美 | 久久久无码精品亚洲无少妇 | 久久羞羞 | 欧美日韩亚洲精品内裤 | 校园sm主奴调教1v1罚视频 | 久久久久久福利 | 欧美美女性高潮 | 欧亚av| 中国性老太hd大全69 | 青青青在线免费观看 | 天天干天天操天天舔 | 日韩免费视频一区二区 | 麻豆一区二区在线 |