<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      輕松玩轉Makefile | 基礎用法

      前言

      本文通過幾個簡單的示例,可以快速了解Makefile的基本使用方法,適用于編譯我們平時練習所編寫的小量代碼。

      1. make命令

      Makefile文件內容: all為目標,這里沒有依賴的文件,這條命令是打印(echo)出“Hello Makefile”這行文字

      all: 
      	echo "Hello Makefile"
      

      運行make后,終端打印的內容

      $ make
      echo "Hello Makefile"
      Hello Makefile
      

      可以看到,Makefile的命令也打印在了終端,要想不輸出命令的內容,可以在命令前面加上@

      make可以指定要生成的目標,如果不指定,則默認第一個目標,我們將Makefile文件內容修改一下

      all: 
      	@echo "Hello Makefile"
      test: 
      	@echo "Hello Test"
      

      運行不同的命令,可以看到不同的打印信息

      $ make
      Hello Makefile
      
      $ make all
      Hello Makefile
      
      $ make test
      Hello Test
      

      2. 生成文件

      假設現在有兩個文件fun.c和main.c,需要利用Makefile生成一個可執(zhí)行文件app。

      fun.c的內容

      #include <stdio.h>
      
      void fun()
      {
      	printf("This is fun()!\n");
      }
      

      main.c的內容

      extern void fun(); 
      
      int main()
      { 
      	fun(); 
      	return 0; 
      }
      

      Makefile的內容

      all: main.o fun.o
      	gcc -o app main.o fun.o
      main.o : main.c 
      	gcc -o main.o -c main.c
      fun.o : fun.c 
      	gcc -o fun.o -c fun.c
      clean:
      	rm app main.o fun.o
      

      當執(zhí)行make命令后,終端會打印下列內容,并生成對應的app , main.o ,fun.o文件

      gcc -o main.o -c main.c
      gcc -o fun.o -c fun.c
      gcc -o app main.o fun.o
      

      3. 清除文件

      依舊是上面的Makefile和源文件,我們輸入make clean,就可以清除剛剛生成的3個文件。打印信息如下:

      $ make clean
      rm app main.o fun.o
      

      假如Makfile目錄中,有名為clean文件,make之后再執(zhí)行make clean又會發(fā)生什么呢?

      我們輸入touch clean產生一個空的文件,再執(zhí)行make clean,觀察現象

      $ touch clean
      $ make clean
      $ make: 'clean' is up to date.
      

      此時make提醒clean文件是最新的,而不是執(zhí)行清除操作。

      要解決這個問題,我們就得引入偽目標。

      偽目標

      偽目標采用".PHONY" 關鍵字來定義, 且必須是大寫字母。修改一下上面的Makefile

      .PHONY:clean
      
      all: main.o fun.o
      	gcc -o app main.o fun.o
      main.o : main.c 
      	gcc -o main.o -c main.c
      fun.o : fun.c 
      	gcc -o fun.o -c fun.c
      clean:
      	rm app main.o fun.o
      

      輸入make clean,我們會發(fā)現此時能夠正常執(zhí)行清除操作。

      makefile內容的注釋

      在Makefile文件中,有些內容我們需要寫一下備注,或者暫時不需要了,想注釋掉,需要怎么操作呢。很簡單,只需要在需要注釋的那行前面加上#號即可,像下面這樣

      #這是的Makefile的注釋
      #all: main.o fun.o
      
      .PHONY:clean
      
      all: main.o fun.o
      	gcc -o app main.o fun.o
      main.o : main.c 
      	gcc -o main.o -c main.c
      fun.o : fun.c 
      	gcc -o fun.o -c fun.c
      clean:
      	rm app main.o fun.o
      

      本文所介紹的Makefile,應付幾個文件的編譯還可以,在實際的工程中,會有幾十個、上百個文件。要是都一個個這樣按文件名書寫,效率太低,且不好維護。后面的文章,我將會介紹Makefile的變量和函數,利用它們,我們的Makefile可以大大提升效率,且便于維護。

      posted @ 2023-03-01 13:46  知微之見  閱讀(686)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 这里只有精品在线播放| 亚洲色欲在线播放一区| 中文字幕99国产精品| 国产高清精品在线91| 国产女人18毛片水真多1| 久久亚洲av成人一二三区| 国产精品久久久久aaaa| 亚洲欧美日韩在线码| 亚洲精品区二区三区蜜桃| 漂亮人妻被修理工侵犯| 亚洲av男人电影天堂热app| 欧美寡妇xxxx黑人猛交| 亚洲成av人片乱码色午夜| 亚洲av无码成人精品区一区| 亚洲av伦理一区二区| 亚洲人成网站77777在线观看| 温宿县| 亚洲春色在线视频| 四虎国产精品永久入口| 国产精品99久久久久久董美香| 日韩av在线一区二区三区| 蜜臀av无码一区二区三区| 日本特黄特黄刺激大片| 亚洲av综合av一区| 三上悠亚精品二区在线观看| 华人在线亚洲欧美精品| 午夜精品极品粉嫩国产尤物| 日韩人妻无码精品久久| 92精品国产自产在线观看481页| 宝兴县| 啦啦啦视频在线日韩精品| 亚洲老女人区一区二视频| 欧美xxxxx在线观看| 一亚洲一区二区中文字幕| 久久超碰色中文字幕超清| 亚洲av日韩av永久无码电影 | 大宁县| 精品一区二区中文字幕| 亚洲成色在线综合网站| 免费无码av片在线观看播放| 人人妻人人做人人爽夜欢视频 |