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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Makefile文件详解

發布時間:2023/12/13 c/c++ 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Makefile文件详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是Makefile文件

  • 一個工程,源文件不計其數,按照類型、功能、模塊分別放在對應的若干個目錄中
  • Makefile定義了一系列的規則,比如定義文件編譯的先后順序。類似shell腳本,也可以執行操作系統的命令
  • Makefile帶來的好處是自動化編譯
  • 文件的命名 makefile 或者 Makefile
  • Makefile規則 :其可以定義一個或者多個 規則
  • 目標 ... :? 依賴? ...
    • 命令 (shell 命令)
  • 目標:最終要生成的文件 (偽目標除外)
  • 依賴:生成目標所需要的文件或者是目標
  • 命令:通過執行命令對依賴生成目標 (命令之前使用 Tab進行縮進)

工作原理

  • 命令在執行之前,需要檢查規則中依賴是否存在
    • 如果存在:執行命令
    • 如果不存在:向下檢查其他的規則,檢查有沒有一個規則是用來生成這個依賴的,如果找到,就執行規則中的命令
  • 檢測更新,在執行規則中的命令時,會比較目標和依賴文件的時間
    • 如果依賴的時間比目標時間晚,需要重新生成目標
    • 如果依賴的時間比目標時間早,目標不需要更新,對應規則中的命令不需要被執行
app:sub.o add.o mult.o main.ogcc sub.o add.o mult.o main.osub.o:sub.cgcc -c sub.c -o sub.oadd.o:add.cgcc -c add.c -o add.omult.o:mult.cgcc -c mult.c -o mult.omain.o:main.cgcc -c main.c -o main.o

?內容詳解

  • 自定義變量
    • 變量名 = 變量值? var = hello
  • 預定義變量
    • AR:? 歸檔維護程序的名稱 默認數值為 ar
    • CC:C 編譯器的名稱 默認數值為cc
    • CXX:C++編譯器的名稱 默認數值為g++
    • $@:目標的完整路徑
    • $<: 第一個依賴的文件的名稱
    • $^ :所有的依賴文件的
  • 獲取變量的數值
    • $(變量名字)
app:mian.c a.c b.cgcc -c main.c a.c b.capp:main.c a.c b.c$(CC) -c $^ -o $@
  • 模式匹配
app:sub.o add.o mult.o main.ogcc sub.o add.o mult.o main.osub.o:sub.cgcc -c sub.c -o sub.oadd.o:add.cgcc -c add.c -o add.omult.o:mult.cgcc -c mult.c -o mult.omain.o:main.cgcc -c main.c -o main.o模式匹配%.o:%.c% 通配符,匹配一個字符串 %.o:%.cgcc -c $< -o $@

函數

(wildcard PATTERN)

  • 功能:獲取指定目錄下指定類型的文件列表
  • 參數:PATTERN 指的是某個或者多個目錄下的對應的某種類型的文件,如果有多個目錄,一般使用空格進行間隔
  • 返回:得到的若干個文件的文件列表 文件名字之間使用空格進行間隔

例子

$(wildcard *.c ./sub/*.c)返回數值的格式:a.c b.c d.c e.c f.c

$(patsubst <pattern>,<replacement>,<text>)

  • ?功能:查找<text>中的單詞(單詞以“空格”、“Tab”或者"回車"、"換行"分隔)是否符合模式<pattern>,如果匹配的話,則用<replacement>替代
  • <pattern> 可以包括通配符"%" 表示任意長度的子串。如果<replacement>中 也包含“%s”,那么<replacement>中的這個'%',將是<pattern>中的%所代表的子串
  • 使用'\'進行轉義 ,即 \%表示真實含義的%字符

例子

$(patsubst %.c , %.o , x.c bar.c)返回數值的類型 x.o bar.o

刪除 所有的.o 文件

  • ?使用命令 make clean 手動清除文件
.PHONY:clean //將clean作為偽目標,就不會生成clean文件 clean:rm $(objs) -f

CMakeLists.txt文件的參考鏈接

  • CMakeLists模板持續更新中,歡迎補充
  • CMakeLists.txt編寫常用命令
  • CMake 語法 - 詳解 CMakeLists.txt
  • CMakeLists.txt 語法介紹與實例演練
  • 【CMake】CMakeLists.txt的超傻瓜手把手教程(附實例源碼)
  • Cmake知識----編寫CMakeLists.txt文件編譯C/C++程序

總結

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

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