make是乙個命令工具,它解釋makefile中的規則。
make通過比較對應檔案(規則的目標和依賴,)的最後修改時間,來決定哪些檔案需要更新、那些檔案不需要更新。對需要更新的檔案make就執行資料庫中所記錄的相應命令(在make讀取makefile以後會建立乙個編譯過程的描述資料庫。此資料庫中記錄了所有各個檔案之間的相互關係,以及它們的關係描述)來重建它,對於不需要重建的檔案make什麼也不做
以下幾種檔案在執行make時將會被編譯
makefile是一種檔案,由它來告訴make需要做什麼,該怎麼做。乙個簡單的makefile描述規則組成:
target... : prerequisites...command
...
#sample makefile
edit
:main
.o kbd
.o command
.o display
.o \
insert
.o search
.o files
.o utils
.o
cc
-o edit main
.o kbd
.o command
.o display
.o \
insert
.o search
.o files
.o utils
.o
main.o
:main
.c defs
.h
cc
-c main
.c
kbd.o
:kbd
.c defs
.h command
.h
cc
-c kbd
.c
command.o
:command
.c defs
.h command
.h
cc
-c command
.c
display.o
:display
.c defs
.h buffer
.h
cc
-c display
.c
insert.o
:insert
.c defs
.h buffer
.h
cc
-c insert
.c
search.o
:search
.c defs
.h buffer
.h
cc
-c search
.c
files.o
:files
.c defs
.h buffer
.h command
.h
cc
-c files
.c
utils.o
:utils
.c defs
.h
cc
-c utils
.c
clean
:
rm edit main
.o kbd
.o command
.o display
.o \
insert
.o search
.o files
.o utils
.o
GNU Make 學習筆記(一)
gnu make 中有 7 個核心的自動變數 automatic variable 工作目標的檔名 archive檔案成員結構中的檔名元素 第乙個必要條件的檔名 時間戳在工作目標之後的所有必要條件,並以空格隔開這些必要條件 所有必要條件的檔名,並以空格隔開這些檔名,不包含重複的檔名 同 但包含重複的...
使用GNU make 編譯C程式
命令列下編譯c程式的方法有以下幾種 手工執行 編寫乙個指令碼來執行這些重複執行的命令 使用make工具自動生成軟體 例子 專案目錄 makefile 手工編譯命令 該命令的執行步驟如下 gcc c o main.o src main.c gcc c o bar.o src bar.c gcc c o...
gnu make如何找預設target
make只會執行第乙個出現的規則,規則中有多個目標時,只執行第乙個目標。有兩個例外 1.以句號開頭的target會被忽略 2.模板規則會被忽略 如下,前兩個規則不會被認為是預設規則 binodir a c binodir c echo 111111111111 o binodir c echo 22...