① vs不能編譯qt
1. 下載qt的安裝包和vs2011的qt插件,大家可以到下面的地址進行下載
BBS:
官網:
本人是在BBS上找到的,官網上沒仔細去找了(英文太多)。
2. 安裝qt sdk
安裝其實很簡單了,基本上一路回車即可,主要是要注意下qt的安裝路徑最好安裝在全英文路徑而且中間沒有空格, 安裝好後,可以運行開始菜單裡面的qt demo,直觀感受下qt的強大功能!
界面非常炫酷
4. 編譯qt
qt默認使用mingw進行編譯,如果要使用vs2011開發,需要將qt重新編譯。
進
入開始菜單microsoft visual studio 2011,visual studio tools,visual studio
command prompt (2011),需要注意的是,這裡面必須是使用visual studio command prompt
(2011),不能使用cmd的dos窗口
進入qt的安裝目錄後,執行cd qt,進入qt的根目錄
運行命令 configure -platform win32-msvc2011,o(選擇opensource模式)回車,y(同意license)回車
k1988插入:
在編譯過程中,為了加快速度,可以對configure適當的加些參數,比如-fast,-no-webkit(這個貌似挺耗時的)
我
選擇的命令行:configure -platform win32-msvc2011 -fast -debug-and-release
-no-webkit -no-script -no-qt3support -nomake demos -nomake examples
-nomake tools -mp
其中:mp是多線程編譯選項。
接著就會自動配置qt的編譯環境,等配置結束後,運行nmake,回車,qt就會開始漫長的編譯過程,這段時間非常長,需要4個小時以上。
liuyu遇到的問題:(自己遇到過,當時沒記錄下來,但是記得編譯過程中遇到這些問題)
1.DefaultLocalizationStrategy.cpp
C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/INCLUDE/yvals.h(21) : war
ning C4005: 『_HAS_TR1』 : macro redefinition
command-line arguments : see previous definition of 『_HAS_TR1』
platform/DefaultLocalizationStrategy.cpp(327) : error C2001: newline in constant
platform/DefaultLocalizationStrategy.cpp(327) : fatal error C1057: unexpected en
d of file in macro expansion
NMAKE : fatal error U1077: 『「C:/Program Files (x86)/Microsoft Visual Studio 10.0
/VC/BIN/cl.EXE」』 : return code 『0x2』
Stop.
NMAKE : fatal error U1077: 『「C:/Program Files (x86)/Microsoft Visual Studio 10.0
/VC/BIN/nmake.exe」』 : return code 『0x2』
Stop.
NMAKE : fatal error U1077: 『cd』 : return code 『0x2』
Stop.
NMAKE : fatal error U1077: 『cd』 : return code 『0x2』
Stop.
解決辦法:
打開文件…/Qt4.8.5/src/3rdparty/webkit/Source/WebCore
/platform/DefaultLocalizationStrategy.cpp
找到327行刪除的引號「」
2.NMAKE:fatal error U1077. return code 0x2
產生原因:找不到代碼文件中包含的頭文件
解決辦法:cmd下進入到vs安裝路徑/VC/Bin下,執行vcvars32,此時會執行vcvas32.bat自動為vs設置環境變數 (這個也試過好幾回,沒效果,依然出現上面錯誤)試試下面的就解決了:
經分析,是環境變數設置的CURR_DIR和TARGETDIR值中含有空格導致了此問題。
通過下面的命令刪除環境變數即可。
在d:/Qt/4.8.6目錄下鍵入下面的命令即可(不是很明白)
接著繼續nmake命令 回車換行
k1988插入:(本人未找到以下文件)
請先刪除
src/3rdparty/webkit/webcore/tmp/moc/debug_shared/mocinclude.tmp
src/3rdparty/webkit/webcore/tmp/moc/release_shared/mocinclude.tmp
/src/script/tmp/moc/debug_shared/mocinclude.tmp
/src/script/tmp/moc/release_shared/mocinclude.tmp
等文件,否則編譯有可能失敗。
k1988插入:
這一步很重要,關繫到是否能用qt-vs-addin。
把d:/qt/bin下的.qmake.cache和configure.cache這兩個文件手動備份到另一個地方。
(本人未嘗試過)然後使用nmake clean進行清理掉那些中間文件(pdb,obj等文件),清理出4個g左右的空間。
nmake confclean是清理配製文件,占的空間不大,可以不執行了。這個時候再把剛備份的.qmake.cache和configure.cache拷回原處。
5.配置vs2011的qt開發環境(vs2011最好是英文版本,qt對vs2011中文版本可能支持的不好)
等qt編譯好後就可以配置vs2011的開發環境了,進入vs2011,選擇qt菜單,qt option,進入下圖界面
k1988插入:
按
步驟編譯好了,用qt助手paths加進去,不知為何ok鍵不亮, 紅字提示:qt in the given path built using
mingw 這個是qt插件的bug,得手工改注冊表 hkey_current_user/software/trolltech/versions/
下增加一個子項 qt486(需要的名稱) 子項下面增加一個數值 installdir,值就是你要配置的qt路徑
ps:如果沒有versions這個文件夾就新建一個吧!
(這里確實是個坑,僅僅修改注冊表居然沒有用,還要去qt的lib文件夾下刪掉兩個文件 –>>刪除qt的lib目錄下(我的路徑是D:/Qt/4.8.6/lib)的libqtmain.a and libqtmaind.a 兩個文件。)
點擊add,添加qt的安裝目錄,並取名字,我這里使用qt的4.8.6版本為名稱,選擇ok後即可。
6.新建或者導入qt項目
可以通過在vs2011新建一個qt項目
② 怎樣編譯 libvlc-qt windows
QtCreator是QT自帶的開發工具,是學習QT非常好的參考資源.
本文提供對編譯QtCreator的簡單描述
(理論上官網發布的都是可以編譯的,但實際編譯時候會遇到一些問題,本文記錄下解決方法)
編譯環境:Windows 7 X64 + Visual Studio 2010 + qt5.0.2
編譯過程:
1.解壓縮qt-creator-2.7.0-src(源碼從qt官網下載)
2.vs2010中,用qt vsaddin打開"qt-creator-2.7.0-src\qtcreator.pro",等待導入完成(需要一定時間,耐心等候)
3.執行編譯。編譯過程可能會有多種錯誤,包括
(a) 錯誤:找不到某個json文件。
解決方法:打開出錯project,在工程中加入json文件就可以。
如果文件系統中不存在這個json文件,則從另外的目錄拷貝一個過來,簡單修改一下內容就可以。
(b) 錯誤:編譯moc生成的cpp文件時,提示找不到某個.h文件。
解決方法:用ultraEdit打開出錯的vcxproj文件,刪除moc.h文件時參數中對該.h文件的強制引用,
(c) 錯誤:找不到DATA_PATH定義。
解決方法:查找出錯工程屬性中預定義變數列表,復制DATA_PATH的預定義內容到源代碼中。
4.修改完編譯錯誤後,重新編譯。因為循環依賴問題,可能要重復多編譯幾次,最終編譯成功。
5.vs2010中,F5運行qtcreator這個project。qtcreator運行成功,
但是會發現qtcreator中的Design標簽頁總是空的,要解決這個問題,繼續執行以下步驟。
6.vs2010中,依次用qt vsaddin打開以下工程,並執行編譯
"qt-creator-2.7.0-src\src\plugins\qmldesigner\qmldesigner.pro"
"qt-creator-2.7.0-src\src\plugins\qmlprojectmanager\qmlprojectmanager.pro"
"qt-creator-2.7.0-src\src\plugins\qmlprofiler\qmlprofiler.pro"
7.運行qtcreator,此時可以發現qtcreator和官網預編譯的版本完全一樣了。
③ moc文件是什麼在哪可以找到有什麼作用....
QT中的moc?
moc是QT的預編譯器,用來處理代碼中的slot,signal,emit,Q_OBJECT等。
moc文件是對應的處理代碼,也就是Q_OBJECT宏的實現部分,在官方文檔上有詳細說明,與其文件在同一目錄下。
④ cmake + Qt 5 編譯出錯,請幫忙看看怎麼解決
Qt在編譯時,需要首先使用uic.exe編譯UI文件,通過moc.exe處理Q_OBJECT之類的宏,當然你可以去掉這些定義,否則就需要加上:
# COMPILE UIs
SET(UIS
mnwindow
)
FOREACH (ui_file ${UIS})
SET(TMP_IN "${PROJECT_SOURCE_DIR}/res/${ui_file}.ui")
SET(TMP_OUT "${PROJECT_BINARY_DIR}/ui_${ui_file}.h")
EXECUTE_PROCESS(COMMAND ${QT_FOLDER}/bin/uic.exe -o ${TMP_OUT} ${TMP_IN})
MESSAGE(STATUS "EXEC=${QT_FOLDER}/bin/uic.exe -o ${PROJECT_BINARY_DIR}/ui_${ui_file}.h ${PROJECT_SOURCE_DIR}/res/${ui_file}.ui")
ENDFOREACH(ui_file)
# CREATE MOC
SET(HEADERS
mainwindow
)
FOREACH (header_file ${HEADERS})
SET(TMP_IN "${PROJECT_SOURCE_DIR}/inc/${header_file}.h")
SET(TMP_OUT "${PROJECT_BINARY_DIR}/moc_${header_file}.cpp")
EXECUTE_PROCESS(COMMAND ${QT_FOLDER}/bin/moc.exe -o ${TMP_OUT} ${TMP_IN})
SET(MOCS ${MOCS} ${PROJECT_BINARY_DIR}/moc_${header_file}.cpp)
MESSAGE(STATUS "EXEC=${QT_FOLDER}/bin/moc.exe -o ${PROJECT_BINARY_DIR}/moc_${header_file}.cpp ${PROJECT_SOURCE_DIR}/inc/${header_file}.h")
ENDFOREACH(header_file)
free c#.net qr creator
這里要注意的是:EXECUTE_PROCESS在COMMAND後面不能加引號,命令直接寫,否則執行的程序也不會出錯,但也不會正常運行.