為什么qt的moc文件會(huì)無(wú)法生成 qt和qtcreator有什么區(qū)別?都是做什么用的?
qt和qtcreator有什么區(qū)別?都是做什么用的?向下到編譯和鏈接層,沒(méi)有區(qū)別。它們都是根據(jù)參數(shù)設(shè)置和附加參數(shù)調(diào)用相應(yīng)的編譯器和連接器,最終完成整個(gè)程序的構(gòu)造。區(qū)別在于兩個(gè)方面:(1)參數(shù)分析的過(guò)程
qt和qtcreator有什么區(qū)別?都是做什么用的?
向下到編譯和鏈接層,沒(méi)有區(qū)別。它們都是根據(jù)參數(shù)設(shè)置和附加參數(shù)調(diào)用相應(yīng)的編譯器和連接器,最終完成整個(gè)程序的構(gòu)造。區(qū)別在于兩個(gè)方面:(1)參數(shù)分析的過(guò)程;(2)依賴(lài)關(guān)系的維護(hù)和更新,也就是所謂的工程組織形式(工程文檔)。
經(jīng)過(guò)多次修改,VC現(xiàn)在使用vcxproj文件來(lái)組織項(xiàng)目。在VS中按F5后,過(guò)程大概是這樣的。我們用msbuild分析vcxproj,獲取構(gòu)建參數(shù),求解依賴(lài)關(guān)系,啟動(dòng)編譯器對(duì)源文件進(jìn)行編譯,最后調(diào)用鏈接器鏈接輸出。當(dāng)然中間還有很多其他過(guò)程,所以我贏了 這里就不贅述了。
QtCreator比較特別。一般來(lái)說(shuō),它使用pro和pri文件來(lái)組織項(xiàng)目,但它沒(méi)有內(nèi)置的構(gòu)建工具。而是通過(guò)Qt工具鏈中的qmake工具解析pro和pri文件,生成其他構(gòu)建系統(tǒng)可以識(shí)別的組織文件,包括make和nmake,然后調(diào)用相應(yīng)的構(gòu)建工具完成構(gòu)建。至于這些建筑系統(tǒng)是如何工作的,去查相關(guān)資料和文件就可以了。
再多說(shuō)兩句,在構(gòu)建Qt程序的時(shí)候,可能還需要幾個(gè)額外的過(guò)程。一個(gè)是moc生成對(duì)象元數(shù)據(jù),一個(gè)是uic把ui接口轉(zhuǎn)換成C代碼,一個(gè)是rcc把Qt資源定義文件qrc轉(zhuǎn)換成數(shù)據(jù)代碼。默認(rèn)情況下,VS不會(huì)為您添加和維護(hù)這些進(jìn)程,所以VS s Qt插件就派上用場(chǎng)了,可以自動(dòng)幫你設(shè)置這些流程。還有,當(dāng)VS構(gòu)建Qt項(xiàng)目時(shí),插件不會(huì)參與其中。也就是說(shuō),在安裝了Qt插件的VS中組織的項(xiàng)目,在沒(méi)有插件的VS中也可以成功構(gòu)建。
當(dāng)然,如果你所有的依賴(lài)關(guān)系都在pro文件中描述清楚了,那么用qmake生成vcxproj,然后啟動(dòng)vs來(lái)構(gòu)建項(xiàng)目是完全可以接受的。
最后,Qt4的VS插件不再更新,VS的AddinAPI也面臨退役的風(fēng)險(xiǎn)。在這里,我還是安利下我的fork的Qt4插件,修復(fù)了一些bug,增加了幾個(gè)新功能,包括配置對(duì)話(huà)框彈性,x86和x64平臺(tái)使用不同Qt版本,不同VS使用不同Qt版本,支持2012和2013,最近打算在2015年增加支持。
地址是:Jacky ding/Qt 4v addin github。
qt是封裝了mfc嘛?
Qt是一個(gè)面向?qū)ο蟮目蚣?,它使用特殊的代碼來(lái)生成擴(kuò)展(稱(chēng)為元對(duì)象編譯器,moc))和一些宏。它易于擴(kuò)展,并允許組件編程。支持跨平臺(tái)。MFC是微軟提供的類(lèi)庫(kù)。(類(lèi)庫(kù)),它以C類(lèi)的形式封裝了Windows API,并包含一個(gè)應(yīng)用框架,以減少應(yīng)用開(kāi)發(fā)人員的工作量。其中包含的類(lèi)包括大量的Windows句柄封裝類(lèi)和許多Windows內(nèi)置控件和組件的封裝類(lèi)。不支持跨平臺(tái)。