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