下到編譯,連結這一層,沒什麼差別,都是根據引數設定,附加引數呼叫相應的編譯器,連結器等等,最後完成整個程式的構建。差別呢,主要就出在兩個方面:(1)引數解析過程;(2)依賴關係的維護和更新,也就是所謂的工程組織形式(工程檔案)。VC經過多次變遷後,現在使用vcxproj檔案來組織工程,在VS裡按F5後,大概過程是這樣子的,用msbuild來解析vcxproj,得到構建引數,解決依賴關係,針對原始檔啟動編譯器編譯,最後呼叫連結器連結輸出,當然中間還夾雜很多別的過程,這裡不一一贅述。QtCreator比較特別,大體上是用pro和pri檔案來組織工程,但它本身不內建構建工具,而是透過Qt工具鏈中的qmake工具,解析pro和pri檔案,生成別的構建系統能識別的組織檔案,包括make,nmake等等,然後呼叫相應的構建工具完成構建。至於這些構建系統如何運作的,找相關的資料和文件查查就知道了。多說幾句,在構建Qt程式的時候,可能需要幾個額外的過程參與,一個是moc生成物件元資料,一個是uic把ui介面轉換為c++程式碼,還有一個是rcc把Qt資源定義檔案qrc轉化為資料程式碼。預設情況下,VS是不會給你新增和維護這幾個過程的,所以VS的Qt外掛就派上用場了,它能自動幫你設定這幾個過程。還有,VS在構建Qt工程的時候,外掛並不會參與其中,也就是說,在安裝有Qt外掛的VS裡組織的工程,組完後放在沒有安裝外掛的VS下也是可以成功構建的。當然,假如你的依賴都在pro檔案裡都描述清楚了,用qmake生成vcxproj,然後啟動vs來構建工程也是完全可以接受的。最後,Qt4的VS外掛已經不再更新了,且VS的AddinAPI也面臨退役的風險,在這裡,我還是安利下我fork的Qt4外掛,修復了一些bug,添加了幾個新特性,包括配置對話方塊resizable,x86和x64平臺使用不同的Qt版本,不同VS使用不同的Qt版本,支援2012和2013,最近打算加上2015支援。地址是:JackyDing/Qt4VSAddin · GitHub
下到編譯,連結這一層,沒什麼差別,都是根據引數設定,附加引數呼叫相應的編譯器,連結器等等,最後完成整個程式的構建。差別呢,主要就出在兩個方面:(1)引數解析過程;(2)依賴關係的維護和更新,也就是所謂的工程組織形式(工程檔案)。VC經過多次變遷後,現在使用vcxproj檔案來組織工程,在VS裡按F5後,大概過程是這樣子的,用msbuild來解析vcxproj,得到構建引數,解決依賴關係,針對原始檔啟動編譯器編譯,最後呼叫連結器連結輸出,當然中間還夾雜很多別的過程,這裡不一一贅述。QtCreator比較特別,大體上是用pro和pri檔案來組織工程,但它本身不內建構建工具,而是透過Qt工具鏈中的qmake工具,解析pro和pri檔案,生成別的構建系統能識別的組織檔案,包括make,nmake等等,然後呼叫相應的構建工具完成構建。至於這些構建系統如何運作的,找相關的資料和文件查查就知道了。多說幾句,在構建Qt程式的時候,可能需要幾個額外的過程參與,一個是moc生成物件元資料,一個是uic把ui介面轉換為c++程式碼,還有一個是rcc把Qt資源定義檔案qrc轉化為資料程式碼。預設情況下,VS是不會給你新增和維護這幾個過程的,所以VS的Qt外掛就派上用場了,它能自動幫你設定這幾個過程。還有,VS在構建Qt工程的時候,外掛並不會參與其中,也就是說,在安裝有Qt外掛的VS裡組織的工程,組完後放在沒有安裝外掛的VS下也是可以成功構建的。當然,假如你的依賴都在pro檔案裡都描述清楚了,用qmake生成vcxproj,然後啟動vs來構建工程也是完全可以接受的。最後,Qt4的VS外掛已經不再更新了,且VS的AddinAPI也面臨退役的風險,在這裡,我還是安利下我fork的Qt4外掛,修復了一些bug,添加了幾個新特性,包括配置對話方塊resizable,x86和x64平臺使用不同的Qt版本,不同VS使用不同的Qt版本,支援2012和2013,最近打算加上2015支援。地址是:JackyDing/Qt4VSAddin · GitHub