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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

makefile(详细讲解)

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 makefile(详细讲解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1.makeflie
  • 2.多個文件執行makefile

1.makeflie

makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發的效率
make是一條命令,makefile是一個文件,兩個搭配使用,完成項目自動化構建
我們使用makefile就在當前目錄下創建makefile/Makefile前單字母大寫小寫都可以。
makefile里面會有什么東西呢?
makefile里面會有依賴關系
依賴關系 :比如有個可執行文件test,但是想有它就要有test.c這個就叫做依賴關系,而使用test.c形成test這個就叫依賴方法
了解了這個我們就來正式使用makefile
在馬克file輸入下面代碼,注意第二行不是用空格,一定要用TAB鍵

我們再把mytest.c文件給寫上

這個時候我們就可以直接make,再運行make生成的可執行文件運行就行了

但是我們想要清理文件怎么辦
vim makefile

改成那樣就可以了.PHONY這是一個偽目標
輸入 make clean就可以清除mytest可執行文件了

而至于為什么默認make是會執行make mytest而不是make clean是因為make mytest在上面,因為它是從上往下默認形成的
.PHONY:相當于makefile的語法格式中的一個關鍵字
比如clean被.PHONY修飾時,表明:總是被執行的
那么我們先來了解下總是不被執行的,比如下面的make 因為生成了mytest
所以接下的make除了第一次創建以外都會報錯

而總是被執行就不會有這種問題,想執行多少次就執行多少次

但是它是怎么區分目標文件的新舊的

Access表示讀取或者進入的時間
再了解下面二個,我們先回憶下文件 = 內容加屬性
Modify表示內容變了的時間
Change表示屬性變了的時間
看下面圖片我們只改變了屬性,可以看到只有change時間變了

但是這里要注意修改了內容,可能會改變屬性,因為改變了內容,大小可能會發生變化
那么我們現在就來證明,因為舊文件比新文件生成的舊那么就不生成

那么我們來用touch來改下Modiy的更新時間看看make會不會成功,我們不改原代碼

可以看到重新生成了

2.多個文件執行makefile

依次創建以下文件
test.c

#include"test.h"void show() {printf("hello hello hello \n"); }

test.h

#include<stdio.h>extern void show();

main.c

#include"test.h"int main() {show();return 0; }

makefile文件

hello:main.o test.ogcc -o hello main.o test.o main.o:main.cgcc -c main.c -o main.o test.o:test.cgcc -c test.c -o test.o .PHONY:clean clean:rm -f *.o hello

總結

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

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