VS 2013編譯64位版本QT 4.8.6及使用cmake為依賴QT生成VS項目時Could NOT find Qt4


對於一些已經解決的問題,本博客不再討論。只將本人遇到的問題做簡單的說明。

一、VS 2013編譯64位版本QT 4.8.6

QT項目官網中,對於QT4,其只提供了windows X86的版本,並且支持VS2010及以下版本。

捕獲

如果我們的開發環境是VS2010以上版本,使用QT4.8.6-VS2010庫來進行開發的話,將會在編譯的時候提示缺少msvcpxxx.dll等一系列缺少dll文件的錯誤,即使我們下載好了MS VC runtime。(以開發環境為VS2013,並使用QT4.8.6-VS2010庫來進行開發為例,將會在編譯的時候提示缺少msvcp100.dll等一系列缺少dll文件的錯誤,即使在我們下載並安裝好Microsoft Visual C++ 2010 Redistributable Package(x64或x86或SP1 x64或 SP1 x86)之后,可能依然會有報缺少msvcp100.dll等一系列dll的錯誤)。這時候,就需要對qt源碼進行編譯了。具體步驟與方法見鏈接:

vs2013 編譯 x64 qt4.8.6  http://blog.csdn.net/zhuyingqingfen/article/details/48002223

這個鏈接所對用的博客中,作者修改了3個文件中共5處地方,有CSDN積分的下載patch文件照着作者的提示操作,沒有積分的,依照圖片找到這3個文件進行5處修改即可。

編譯完成之后,添加相應的環境變量,參考[QT] QT4環境變量配置,適合初學者

二、Could NOT find Qt4 (missing: QT_MOC_EXECUTABLE QT_RCC_EXECUTABLE QT_UIC_EXECUTABLE) (found version "4.8.6")

在很多時候需要利用cmake工具來實現項目的跨平台性,在使用的過程中,本人遇到了這樣的問題:

image

CMake Error at D:/CMake/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message): 
Could NOT find Qt4 (missing: QT_MOC_EXECUTABLE QT_RCC_EXECUTABLE 
QT_UIC_EXECUTABLE) (found version "4.8.6")

 

也就是說cmake工具找到了qt,但是沒找到moc,uic和rcc。本人嘗試重啟計算機,並期待是因為新增的環境變量沒有生效導致的。但結果日然如此。

解決辦法如下:

找到報錯對應的cmakelists.txt,並找到find_package(Qt4 REQUIRED )這條語句。

如本人遇到問題的文件內容如下:

 1 ADD_SUBDIRECTORY(SfM) 
 2 ADD_SUBDIRECTORY(Localization) 
 3 #ADD_SUBDIRECTORY(opencv)
 4 
 5 IF (OpenMVG_BUILD_OPENGL_EXAMPLES) 
 6   ADD_SUBDIRECTORY(SfMViewer) 
 7 ENDIF (OpenMVG_BUILD_OPENGL_EXAMPLES)
 8 
 9 ADD_SUBDIRECTORY(colorHarmonize)
10 
11 find_package(Qt4 REQUIRED )
12 
13 if (QT_FOUND) 
14 ADD_SUBDIRECTORY(ui) 
15 endif (QT_FOUND)

 

使用set命令手動指定moc,uic,rcc文件的路徑。修改后的文件內容如下:

 1 ADD_SUBDIRECTORY(SfM) 
 2 ADD_SUBDIRECTORY(Localization) 
 3 #ADD_SUBDIRECTORY(opencv)
 4 
 5 IF (OpenMVG_BUILD_OPENGL_EXAMPLES) 
 6   ADD_SUBDIRECTORY(SfMViewer) 
 7 ENDIF (OpenMVG_BUILD_OPENGL_EXAMPLES)
 8 
 9 ADD_SUBDIRECTORY(colorHarmonize)
10 
11 set(QT_MOC_EXECUTABLE D:\\qt-everywhere-opensource-src-4.8.6\\bin\\moc.exe) 
12 set(QT_RCC_EXECUTABLE D:\\qt-everywhere-opensource-src-4.8.6\\bin\\RCC.exe) 
13 set(QT_UIC_EXECUTABLE D:\\qt-everywhere-opensource-src-4.8.6\\bin\\Uic.exe)
14 
15 find_package(Qt4 REQUIRED )
16 
17 if (QT_FOUND) 
18 ADD_SUBDIRECTORY(ui) 
19 endif (QT_FOUND) 

 

至此,問題得以解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM