qmake、.pro(Qt工程檔案)、make、Makefile

三多兄發表於2020-11-23

簡單介紹下Qt 程式的構建過程

構建工具的應用場景(可能情境表達更準確),也就是構建工具是為了解決什麼問題?

        通常一個商業軟體專案,其工程通常由多個原始檔、標頭檔案以及外部庫組成,利用編譯器將工程編譯成可執行檔案。但是通常在產品開發過程中,不可避免的會新增、修改或者刪除(增刪改查)原始檔(原始檔 + 標頭檔案)和庫,想要得到能夠反映當前工程狀態的可執行檔案,這就需要重新編譯和連結和上一次工程狀態相比受影響的檔案或者庫。經常這種更改-重新編譯的過程,通常會發生多次。

        引用Qt設計模式中的原文:“為了跟蹤工程的全部部分,要求有一種機制來精確地指定涉及輸入檔案、建立程式時所需的工具、中間目標檔案和他們的依賴關係,以及最終的可執行目標檔案”。

        編譯簡單的程式,可以直接使用命令列如下,可見對於複雜的工程,這個工作量就顯得很繁瑣:

g++ 1.cpp 2.cpp -o app

make

用於處理工程建立任務最廣泛使用的工具是make,它會從Makefile 檔案中讀取工程規範的細節,也會讀取提供給編譯器的指令,Makefile與shell 指令碼類似,其中至少會包含如下資訊:

  • 用於建立某種檔案型別的規則(例如:為了從.cpp檔案得到.o檔案,必須對.cpp檔案執行gcc -c指令)
  • 原始檔列表和標頭檔案列表
  • 目標檔案指定了必須建立哪些可執行檔案(或者庫)
  • 依賴關係,列出當前某些檔案發生改變時,哪些目標檔案必須重新建立

預設情況下,make命令會從當前的工作目錄下載入名稱為Makefile的檔案,並執行指定的編譯連結指令

 

構建Qt應用程式流程如下:

 

Qt Creator IDE提供了一個qmake工具,它會自動產生Makefile檔案,make 命令的執行實際上是通過單擊如下圖的“錘子”按鈕來實現的

 

 

 

相關文章