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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

makefile通用版本

發(fā)布時間:2023/11/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 makefile通用版本 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

實際當(dāng)中程序文件比較大,這時候?qū)ξ募M(jìn)行分類,分為頭文件、源文件、目標(biāo)文件、可執(zhí)行文件。也就是說通常將文件按照文件類型放在不同的目錄當(dāng)中,這個時候的Makefile需要統(tǒng)一管理這些文件,將生產(chǎn)的目標(biāo)文件放在目標(biāo)目錄下,可執(zhí)行文件放到可執(zhí)行目錄下。

DIR_INC = ./include DIR_SRC = ./src DIR_OBJ = ./obj DIR_BIN = ./binSRC = $(wildcard ${DIR_SRC}/*.c) OBJ = $(patsubst %.c,${DIR_OBJ}/%.o,$(notdir ${SRC}))TARGET = mainBIN_TARGET = ${DIR_BIN}/${TARGET}CC = gcc CFLAGS = -g -Wall -I${DIR_INC}${BIN_TARGET}:${OBJ}$(CC) $(OBJ) -o $@${DIR_OBJ}/%.o:${DIR_SRC}/%.c$(CC) $(CFLAGS) -c $< -o $@.PHONY:cleanclean:find ${DIR_OBJ} -name *.o -exec rm -rf{}

解釋如下:

(1)Makefile中的 符號 $@, $^, $< 的意思:
  $@??表示目標(biāo)文件
  $^??表示所有的依賴文件
  $<??表示第一個依賴文件
  $???表示比目標(biāo)還要新的依賴文件列表

(2)wildcard、notdir、patsubst的意思:

  wildcard : 擴(kuò)展通配符
  notdir : 去除路徑
  patsubst :替換通配符

SRC = $(wildcard *.c)

等于指定編譯當(dāng)前目錄下所有.c文件,如果還有子目錄,比如子目錄為inc,則再增加一個wildcard函數(shù),象這樣:

SRC = $(wildcard *.c) $(wildcard inc/*.c)

(3)gcc -I -L -l的區(qū)別:

? ? ???gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld

? ? ? ?上面這句表示在編譯hello.c時-I /home/hello/include表示將/home/hello/include目錄作為第一個尋找頭文件的目錄,

  ?尋找的順序是:/home/hello/include-->/usr/include-->/usr/local/include

?  -L /home/hello/lib表示將/home/hello/lib目錄作為第一個尋找?guī)煳募哪夸?#xff0c;

  ?尋找的順序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib

? ? ? ?-lworld表示在上面的lib的路徑中尋找libworld.so動態(tài)庫文件(如果gcc編譯選項中加入了“-static”表示尋找libworld.a靜態(tài)庫文件)

?

轉(zhuǎn)載于:https://www.cnblogs.com/wanghao-boke/p/11492898.html

總結(jié)

以上是生活随笔為你收集整理的makefile通用版本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。