《九》makefile中大型項(xiàng)目案例
為了實(shí)現(xiàn)一個大型的項(xiàng)目,
通常工程里面會有很多的目錄.
每個目錄有不同的作用.
makefile也是一種代碼,
至于怎樣實(shí)現(xiàn)makefile對大型工程的管理,有很多思路:
大型makefile思路1:
本次用于編寫一個通用的多目錄下的makefile.
一般會有一個頂層makefile和通用的makefile.build.
然后每個.c文件夾里,會有子目錄makefile.
最后,在頂層makefile中編寫一個shell遍歷程序.
遍歷每個子目錄,并進(jìn)入目錄運(yùn)行make命令.
因?yàn)楦鱾€makefile在執(zhí)行指令的時候,都用目錄,所以不用擔(dān)心找不到的問題.
大型makefile思路2:
可以參考linux的內(nèi)核,逐層生成一個打包文件.
采用遍歷,
最終生成一個總的打包文件.
然后,通過總的打包文件,生成可執(zhí)行文件
大型makefile思路3:
可以各層目錄下,生成.o文件.
然后把各層的.o文件拷貝到頂層目錄.
通過頂層目錄,把所有的.o文件進(jìn)行鏈接,生成最終的可執(zhí)行文件.
例如:
項(xiàng)目
? ? |---build文件夾
? ? |? ? |---exes文件夾
? ? |? ??? ? |---huge.exe
? ? |? ? |---libs文件夾
? ? |? ? |---makefile
? ? |? ? |---make.rule
? ? |
? ? |---source文件夾
? ? ? ? |---lib_hello文件夾
? ? ? ? |? ? |---inc文件夾
? ? ? ? |? ? |? ? |---helloworld.h
? ? ? ? |? ? |---src文件夾
? ? ? ? |? ? ? ? ?|---helloworld.c
? ? ? ? |? ? ? ? ?|---makefile
? ? ? ? |---main_hello文件夾
? ? ? ? ? ? ? |---src文件夾
? ? ? ? ? ? ? ??? ? |---deps文件夾
? ? ? ? ? ? ? ??? ? |? ? |---main.dep
? ? ? ? ? ? ? ??? ? |---objs文件夾
? ? ? ? ? ? ? ??? ? |? ? |---main.o
? ? ? ? ? ? ? ??? ? |---main.c
? ? ? ? ? ? ? ??? ? |---makefile
舉例:
用思路1和思路2的方式實(shí)現(xiàn)的helloworld多目錄的應(yīng)用。
這個例子完全可以應(yīng)用在其他大型項(xiàng)目中.
例子鏈接:
鏈接:https://pan.baidu.com/s/13yVmF5TvKB0M5njj8LkWYA
提取碼:1234
鏈接:https://pan.baidu.com/s/14D79UFrJ9wLWTEpWu1sgpw
提取碼:1234