整個一下午都在為Qt中出現的構建及編譯問題而糾結,終於發現了問題所在,故記錄下來並闡述解決方法。
問題描述:
當筆者運行qtNetTest的qt widget項目時,一直報錯:
Running steps for project qtNetTest...
Could not start process "F:\Qt_5.3\5.3\mingw482_32\bin\qmake.exe"
C:\ProjectFolder\qt_projects\qtNetTest\qtNetTest.pro -r -spec win32-g++
"CONFIG+=debug"
Error while building/deploying project qtNetTest (kit: Desktop Qt 5.3.0 MinGW 32bit)
When executing step 'qmake'
Elapsed time: 00:00.
問題剖析及解決方案:
剛開始,筆者一直以為是項目文件路徑存在中文字符,當仔細思考及驗證後,發現中文項目路徑一般的報錯信息為:
Running steps for project qtNetTest...
Starting process "F:\Qt_5.3\5.3\mingw482_32\bin\qmake.exe"
C:\程序\qt_projects\qtNetTest\qtNetTest.pro -r -spec win32-g++
"CONFIG+=debug"
Cannot find file : C:\程序\qt_projects\qtNetTest\qtNetTest.pro
Error while building/deploying project qtNetTest (kit: Desktop Qt 5.3.0 MinGW 32bit)
When executing step 'qmake'
Elapsed time: 00:00.
此種情況的報錯與筆者所遇到的問題的不同就在於後者的報錯信息中出現了”Cannot find file”信息,此種信息表示qmake程序無法找到.pro文件,導致此錯誤的原因即在於項目文件路徑中有中文,而qmake無法識別中文(字符編碼集的不同,當然通過修改qt的字符編碼集是可以實現識別中文的),從而導致錯誤發生。
對於自己所遇到的報錯問題,筆者發現錯誤發生的關鍵在於build directory(構建目錄)的設定。
在發生錯誤時,
而正確的情況下,應該為:
我們需要將構建目錄設置為項目文件夾所在目錄。
當然,這裡,對於構建目錄還有兩點說明(這兩種情況下,程序均可以順利通過構建和編譯):
1、qmake不支持構建目錄在源文件目錄之下(不建議使用此種方法):
返回欄目頁:http://www.bianceng.cn/Programming/cplus/
2、Shadow build(隱式構建):上面所述情況皆為隱式構建。
***顯式構建,構建目錄與工程目錄相同(個人比較推薦此種構建方式,因為文件組織更加有條理,更加易於管理)。
小結
對於遇到的此問題,個人究其原因在於:當改變qt的工作目錄時,由於文件是移動的過程,對於項目運行環境的文件改變並未隨著文件移動而改變,因此,我們在移動項目文件夾後應該重新檢查項目的構建和運行環境。當然,對於中文路徑,依舊需要留意。
作者:csdn博客 Adoryn