日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Make文件(一)

發布時間:2023/11/30 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Make文件(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本規則

目標:依賴

(tab)規則

?

目標:需要生成的目標文件

依賴:生成該目標所需的一些文件

規則:由依賴文件生成目標文件的手段

tab:每條規則前必須以tab開頭,使用空格不行。?

?

例如:

/** test.c **/ #include<stdio.h> int main() {printf(“this is test\n”);return 0; }

終端編譯就是:gcc test.c -o test?

換成Makefile文件就是

test:test.cgcc test.c -o test

其中第一行的test就是要生成的目標,test.c 就是依賴項,第二項就是由test.c生成的test的規則。

?

Makefile可以生成多個目標,但是Makefile會將第一個目標定為終極目標。

?

普通變量:

變量定義以及賦值:

變量直接采用賦值的方法即可完成定義;如:

INCLUDE = ./include/

變量取值:

用括號括起來再加一個美元符,如:

FOO = $(OBJ)

?

系統自帶變量:

通常都是大寫,比如CC,PWD,CFLAG,等等。

有些有默認值,有些則沒有,比如:

?

CPPFLAGS:預處理器需要的選項 如:-I

CFLAGS:編譯的時候使用參數 -Wall -g -c

LDFLAGS:鏈接庫使用的選項 -L -I

變量的默認值可以被修改,比如CC的默認值是cc,但是可以修改為CC = gcc

?

自動變量:

常用的自動變量:

系統提供了很多自動變量,但常用的就是與以下三個,這些自動變量只能在規則中使用,其他地方不能使用。

$@ à規則中的目標

$< à規則中的第一個依賴項

$^ à規則中所有的依賴性

?

例如:

app:main.c fun1.c fun2.cgcc $^ -o $@

其中:$^表示main.c fun1.c fun2.c,$< 表示main.c , $@ 表示app

?

模式規則:

模式規則是在目標及依賴條件中使用%來匹配對應的文件,比如在目錄下有main.c,fun1.c,fun2.c 三個文件,對這三個文件的編譯可以由一條規則完成。

%.o : %.c$(CC) -c $< -o $@

這條模式規則表示:

main.o 由main.c 生成

fun1.o 由fun1.c 生成

fun2.o 由fun2.c 生成

?

這就是模式規則的作用,可以一次匹配目錄下所有的文件。

?

函數:

makefile也為我們提供了大量的函數,同樣經常使用到的函數為以下兩個。

?

wildcard:

用于查找指定目錄下指定類型的文件,跟的參數就是目錄+文件類型,比如:

src = $(wildcard ./src/*.c)

?

這句話表示,找到./src目錄下的所有文件后綴為.c的文件,并賦值給變量src

命令執行完畢后,src的值就是main.c fun1.c fun2.c

?

patsubst

匹配替換,例如以下例子,用于從src目錄中找到所有的.c結尾的文件,并將其替換為.o文件,并賦值給obj

obj = $(patsubst %.c , %.o ,$(src))

將src變量中所有后綴為.c文件替換成.o

命令執行完成后,obj的值為main.o fun1.o fun2.o

特別的,如果想把.o文件放在obj目錄下,可以用以下方法:

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

?

makefile文件中所有的函數都必須有返回值。

?

#make all 執行生成可執行文件
#1編譯器 2編譯選項 3輸出 4生成的可執行文件 5需要的源文件 6需要當庫文件

?

轉載于:https://www.cnblogs.com/wanghao-boke/p/11068417.html

總結

以上是生活随笔為你收集整理的Make文件(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。