Qt源代碼使用Vs2013中VC編譯器編譯的流程


  這應該算是我的第一篇博客,之前一直沒有寫博客的習慣。直到最近幾天,看到一篇文章分析寫博客對於程序員的技術提升的作用以及自己在這段時間的學習中總是不得其法的原因,故而下定決心,開始以博客的方式記錄自己的點滴學習過程,同時也給自己一個反思的時間,用來將知識反覆咀嚼,以達到正真意義上的掌握。

  這一篇文章主要記述的是我這段時間在學習C++開源框剪Qt的過程中,碰到的一個最首要的問題——如何用VC編譯器來自己編譯Qt的源碼呢?關於Qt的介紹,大家可以參考維基百科詞條。(Qt詞條

  由於自己平時在用VS寫代碼的時候,幾乎從來沒有在DOS下,自己手動編譯過代碼,所以一碰到要自己編譯代碼的東西就頭大的很。然後時間久了之後發現,很多好的開源平臺的技術的很多項目都是隻提供源碼的,也就是說剩下的從源碼到二進制文件這中間所有的事情都應該是由我們自己來完成的。從這個角度來看,自己會用編譯器編譯源碼而不是簡單的在IDE中點一下編譯是我們程序員走向更高的平臺必須要過的一關,我們需要自己跳出舒適的環境,讓自己痛苦起來,那樣我們才能更好的成長。

  源碼的編譯我個人將其分爲以下幾個階段:

  • 獲取源代碼
  • 配置編譯環境
  • 配置編譯條件
  • 開始編譯

  先總的說一下各個階段主要乾的是些什麼事情,獲取源代碼這應該不需要多說,畢竟這是“做飯”的食材,不能沒有。其次配置編譯環境,在這個階段,我們需要確定使用什麼編譯器,系統變量是否設置好了。接着配置編譯條件,就需要我們根據具體的情況生成相應的Makefile和其他想的文件了。最後開始編譯階段,幾乎不需要我們在做多少事情了,簡單的把這些事情交給編譯器,只有出現問題了,我們在來解決也就可以了。在這裏有一點需要提醒各位的是,我們在最後開始編譯的階段,並不是會一帆風順的,反而會是一波三折,經常出現一些莫名其妙的問題,很是煩人。哈哈,這就需要大家有着很好的耐心了。

  1. 獲取源碼

  獲取源碼主要有兩種方式,一種是通過官網(QT)直接下載源碼的打包文件,另外一種就是用git從Qt公司的Repository下載就可以了(地址是:code.qt.io)。第一種方式不在多說,這裏主要說下通過git下載源碼的方式,其實很簡單,在windows下打開git bash或者在cmd窗口輸入一行簡單的命令就可以了。具體命令如下:

1 git clone git://code.qt.io/qt/qt5.git

執行該命令之後,git就會幫我們從code.qt.io服務器上下載qt5的源碼,保存的位置是我們當前工作目錄。

  2.配置編譯環境

  配置編譯環境的話主要就是設置下相關的系統環境變量。在這裏設置環境變量有兩個目的,第一、將VC的編譯工具nmake添加到環境變量中以便在命令行中我們可以使用該工具;第二、保證後面編譯Qt源碼的時候會使用到的qmake工具可以正常使用。設置環境變量一般也有兩種方式,第一種就是我們在系統環境設置界面通過GUI來操作完成,第二種就是我們自己寫一個cmd或者bat腳本,將所有操作放在一起,然後在命令行中執行該腳本就可以了。同樣第一種方式不多介紹,我們這裏主要使用的是第二種方法,下面我將腳本的代碼貼出來,大家可以自己瞭解,當讓也可以保存爲腳本直接運行。

CALL "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64
SET _ROOT=C:\user\administrator\qt5
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
SET QMAKESPEC=win32-msvc2013
SET _ROOT=

  3.配置編譯條件

  這個階段也是很輕鬆,因爲有負責人的程序員幫我們做了絕大部分的工作,所以我們只要完成剩下的那些很簡單的東西就可以了。在這個階段主要用到的工具是我們下載的源碼中的configure或者configure.bat這兩個文件中的。configure工具主要是設置一些編譯的相關條件和生成Makefile文件。對於Qt的源碼編譯來說,我們需要輸入的命令行如下:

configure -developer-build -opensource -confirm-license

  4.開始編譯

  完成了前面三個步驟,我們也就生成了編譯需要使用到的Makefile文件了。那麼接下來的事情就需要nmake工具來幫助我們完成了,用的具體命令如下:

nmake

  通過以上四步,我們就可以完成Qt源代碼的編譯了。怎麼樣,是不是覺得其實也不過如此啊,只是我們平時都被太過於智能化的IDE給“矇蔽”了,我們雖然提高了開發效率,但是也在某種程度上失去了一些東西。個人覺得要向走的更高更遠,我們需要自己去完成在平時的開發過程中本身由IDE代替我們完成的工作,當我們真正的熟悉原理之後,在讓IDE幫我們工作,我們或許會做的更好!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章