Makefile學習筆記

2021-10-21 03:48:33 字數 1116 閱讀 5804

makefile的目的是為了減少編譯, 管理工程, 如果乙個100個原始檔, 只修改了乙個原始檔而要全部重新編譯的話, 有點耗時

所以需要乙個工具來管理, 這個工具就是makefile

target ...

: prerequisites ...

command

.....

.

targe是目標檔案, 可以是可執行檔案,也可以是標籤(clean)

依賴就是生成目標需要的檔案

command是生成目標需要的命令

原理是, 先看main的依賴檔案, 檢視有沒有這些依賴檔案,如果沒有就去查詢這個目標, 然後用命令來生成

我們看到最後乙個clean沒有依賴,所以不會去查詢與i來, 下面的命令也不會執行, 所以如果我們要執行clean這個命令, 就需要make clean這樣顯式的指出make clean

但是有乙個問題就是, 如果有檔名和clean重名怎麼辦, 這個時候就需要為偽命令的使用了.

如果make完成後,自己另外定義乙個名叫clean的檔案,再執行make clean時,將不會執行rm命令。

為什麼要使用偽目標

1為了避免在makefile中定義的只執行命令的目標和工作目錄下的實際檔案出現名字衝突

.phony:clean

那麼目錄中不論是否有clean檔案,只要輸入"make clean"就能執行rm命令了。

當乙個目標被宣告為偽目標後,make在執行規則時不會去試圖去查詢隱含規則來建立它。這樣就提高了make的執行效率,也不用擔心由於目標和檔名重名了。

2 另一種是提交執行makefile時的效率, 偽目標的另一種使用場合時在make的並行和遞迴執行過程中

main: main.o

gcc -o main main.o

main.o: main.c

gcc -c main.c

.phony:clean

clean:

rm *

.o rm main

makefile學習筆記 makefile概述

20180411 makefile學習筆記 makefile概述 makefile主要是在unix下軟體編譯時寫的,window下一般不用 unix裡makefile做的事 相當於window裡ide所做的事 會不會寫makefile,從乙個側面說明了乙個人是否具備完成大型工程的能力。makefil...

Makefile學習筆記

makefile for boot asm nasm 定義變數 asmflags i include run qemu system i386 hdd boot.img boot.img boot.asm asm boot.asm f bin o boot.img install run clean...

Makefile學習筆記

本文為學習筆記,僅供參考,如有好的建議歡迎指出!makefile規則 目標檔案 依賴檔案 tab 命令 命令前必須有乙個tab exp test main.c gcc main.c o test 隱式規則 o c 同名匹配 變數 類似於c中的巨集,引用方式 arg 變數名 值 引用變數可在之後定義 ...