欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++項目實戰(zhàn)之makefile使用

 更新時間:2024年05月01日 08:26:42   作者:存錢買房的陳一言  
這篇文章主要介紹了C++項目實戰(zhàn)之makefile使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

makefile簡介

一個工程中的源文件不計其數(shù)(一個項目有有很多的文件),現(xiàn)在的項目基本都是按模塊進行劃分的,而這些模塊存放在若干目錄中。

makefile中定義了一系列的規(guī)則(這些規(guī)則定義了一系列如何編譯程序的操作,比如哪些文件需要編譯、哪些臨時文件需要及時的清除等),如此以來我們只需要通過make命令就可以一鍵編譯源程序了。

所以常常說makefile帶來的最大的好處就是"自動化編譯",因為只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發(fā)效率。(以上用于可能不規(guī)范,是作者的理解)

make簡介

make是一個命令工具,它能夠解釋Makefile文件中的指令,一般來說大多數(shù)IDE都具備這樣的功能。

makefile的編寫的規(guī)則

makefile文件的命名:

makefile 或者 Makefile

makefile的規(guī)則:

三要素:目標   依賴    命令

格式==》

  • 目標:依賴
  • (TAB)命令

目標:最終要生成的文件(偽目標除外) 

依賴:生成目標所需要的文件或目標(這里的目標是子目標)

命令:通過執(zhí)行命令來操作依賴來生成目標

我們來看一個例子

當前文件夾有如下5個文件

第一個版本的Makefile 

第二個版本我們添加以下子目標

添加子目標的目的:

  • make工作原理1

命令在執(zhí)行前,需要先檢查規(guī)則中的依賴是否存在

  • 如果存在,則執(zhí)行命令
  • 如果不存在,則向下搜索,檢查有沒有一個規(guī)則的目標是這個依賴,
  • 如果存在則先執(zhí)行這個子目標,先生成這個最終目標所需的依賴,
  • 那么我們有了依賴才可以生成最終目標

collect2: error: ld returned 1 exit status   

//為毛會出現(xiàn)這個問題,好像是子啊制作動態(tài)庫的時候才會用這個問題

第三個版本我們通過自定義變量的方式

第四個版本我們通過makfile中的自動變量

第五個版本使用函數(shù)

makefile中主要使用的只要兩個函數(shù)

wildcard  ==》查找指定目錄下的指定文件  

src=$(wildcard ./*.c)

patsubst  ==》將指定目錄下的什么文件后綴進行替換

obj=$(pastsubst ./%.c,./%.o,$(src))

第6個版本 加上仿函數(shù)

加上仿函數(shù)的目的:

對于makefile而言下面的規(guī)則全都是最終的目標提供服務的。

如果不是最終規(guī)則(第一個規(guī)則)所需要的依賴那么不會區(qū)執(zhí)行。

但是通過偽目標就可以打破這個約定,一定會執(zhí)行

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論