1. 程式人生 > 其它 >01工程檔案目錄規劃、Makefile編寫

01工程檔案目錄規劃、Makefile編寫

一、工程檔案目錄規劃

主目錄名nginx
a)_include目錄:專門存放各種標頭檔案;如果分散:#include "sfaf/sdafas/safd.h"
b)app目錄:放主應用程式.c(main()函式所在的檔案)以及一些比較核心的檔案;
——b.1)link_obj:臨時目錄,會存放臨時的.o目標檔案,這個目錄不是手工建立,後續用makefile指令碼來建立的;
——b.2)dep:臨時目錄,會存放臨時的.d開頭的依賴檔案,依賴檔案能夠告知系統哪些相關的檔案發生變化,需要重新編譯,後續用makefile指令碼來建立;
——b.3)nginx.c:主檔案,main()入口函式就放到這裡;
——b.4)ngx_conf.c

:普通的原始碼檔案,跟主檔案關係密切,又不值得單獨放在 一個目錄;
c)misc目錄:專門存放各種雜合性的不好歸類的1到多個.c檔案;暫時為空
d)net目錄:專門存放和網路處理相關的1到多個.c檔案,暫時為空
e)proc目錄:專門存放和程序處理有關的1到多個.c檔案,暫時為空
f)signal目錄:專門用於存放和訊號處理有關的1到多個.c檔案;

二、Makefile編寫

規劃一下makefile檔案的編寫
a)nginx根目錄下我會放三個檔案:
——a.1)makefile:是編譯專案的入口指令碼,編譯專案從這裡開始,起總體控制作用;
——a.2)config.mk:這是個配置指令碼,被makefile檔案包含;單獨分離出來是為了應付一些可變的東西,所以,一般變動的東西都往這裡搞;
——a.3)common.mk

:是最重要最核心的編譯指令碼,定義makefile的編譯規則,依賴規則等,通用性很強的一個指令碼,並且各個子目錄中都用到這個指令碼來實現對應子目錄的.c檔案的編譯;
b)每個子目錄下(app,signal)都有一個叫做makefile的檔案,每個這個makefile檔案,都會包含根目錄下的common.mk,從而實現自己這個子目錄下的.c檔案的編譯。現在的makefile不支援目錄中套子目錄(只支援一級目錄),除非大家自己修改;
c)其他規劃,上邊講過;
——app/link_obj:臨時目錄,存放.o目標檔案
——app/dep:存放.d開頭的依賴關係檔案;
細節
生成依賴檔案和連結檔案的位置設定

make clean 命令

PS:贈送書籍《GUN_makefile中文手冊》
連結:https://pan.baidu.com/s/1z46By5692uQEO_1QG0PH3w
提取碼:2xnu
失效請留言。