一、makefile文件
1、makefile是什麼?
makefile是一種可以自動化編譯程序的腳本文件,它可以將源代碼轉化為可執行程序。
2、makefile的作用
makefile文件可以幫助我們避免手工編譯程序時的重複性工作,減輕了程序員的負擔。
二、makefile編程
1、makefile編程的基本語法
target:prerequisites [TAB]command
其中,target
是目標文件,prerequisites
是依賴文件,command
是需要執行的命令。
2、實例:
hello:hello.c [TAB]gcc -o hello hello.c
這個例子表示如果hello.c文件有修改,就執行gcc命令編譯成可執行文件hello。
三、makefile編寫入門教程
1、第一步:確定目標文件和依賴文件。
2、第二步:編寫命令。
3、第三步:給出clean和all規則。
4、實例:
OBJS = hello.o TARGET = hello all: $(TARGET) $(TARGET): $(OBJS) [TAB]gcc -o $(TARGET) $(OBJS) hello.o: hello.c [TAB]gcc -c hello.c -o hello.o clean: [TAB]rm -f *.o $(TARGET)
這個例子中,all規則包含了$(TARGET)的依賴關係$(OBJS)和編譯$(TARGET)所需要的命令。
四、makefile的功能
1、makefile的主要功能是自動化編譯程序。
2、它可以根據文件的時間戳自動判斷哪些文件需要重新編譯。
3、另外,makefile還可以配合版本控制系統實現自動化部署。
五、makefile規則
1、偽目標規則
偽目標規則是指一個目標並不對應一個實際的文件,而是為了執行命令而存在的。
.PHONY:clean clean: [TAB]rm -f *.o $(TARGET)
2、通配符規則
通配符規則可以匹配多個文件,一般用來編譯同一目錄下的多個源文件。
$(TARGET): *.o [TAB]gcc -o $(TARGET) *.o
3、模式規則
模式規則可以快捷地編譯同一類型的源文件,其語法為:
%.o: %.c [TAB]gcc -c $< -o $@
六、makefile菜鳥教程
1、菜鳥教程中常用的makefile變量
CC
:C語言編譯器CFLAGS
:編譯參數OBJ_DIR
:目標文件存儲目錄SRC_DIR
:源文件存儲目錄
2、實例
CC := gcc CFLAGS := -Wall OBJ_DIR := obj SRC_DIR := src TARGET := hello SRCS := $(wildcard $(SRC_DIR)/*.c) OBJS := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS)) $(TARGET): $(OBJS) [TAB]$(CC) -o $@ $^ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c [TAB]$(CC) $(CFLAGS) -c $< -o $@ clean: [TAB]rm -rf $(OBJ_DIR)/*.o $(TARGET)
七、makefile經典教程
1、經典教程中常用的makefile命令
echo
:打印信息ifneq
:判斷變量是否不相等ifeq
:判斷變量是否相等include
:包含其他makefile文件
2、實例
CC := gcc CFLAGS := -Wall TARGET := hello ifeq ($(CC),clang) [TAB]CFLAGS += -Wno-format endif SRCS := $(wildcard *.c) OBJS := $(patsubst %.c,%.o,$(SRCS)) all: $(TARGET) $(TARGET): $(OBJS) [TAB]$(CC) -o $@ $^ %.o: %.c [TAB]$(CC) $(CFLAGS) -c $< -o $@ clean: [TAB]rm -f $(TARGET) $(OBJS) .PHONY: all clean
八、makefile自動變量
1、自動變量可以用來表示命令中的不同部分。
$@
:目標文件$^
:依賴文件$<
:第一個依賴文件
2、實例
CC := gcc CFLAGS := -Wall TARGET := hello SRCS := $(wildcard *.c) OBJS := $(patsubst %.c,%.o,$(SRCS)) all: $(TARGET) $(TARGET): $(OBJS) [TAB]$(CC) -o $@ $^ %.o: %.c [TAB]$(CC) $(CFLAGS) -c $< -o $@ clean: [TAB]rm -f $(TARGET) $(OBJS) .PHONY: all clean
九、簡單的makefile
1、最簡單的makefile
hello:hello.c [TAB]gcc -o hello hello.c
2、自動化編譯
CC := gcc CFLAGS := -Wall TARGET := hello OBJS := hello.o all: $(TARGET) $(TARGET): $(OBJS) [TAB]$(CC) -o $@ $^ hello.o: hello.c [TAB]$(CC) $(CFLAGS) -c hello.c -o hello.o clean: [TAB]rm -f *.o $(TARGET)
以上就是makefile教程的詳細闡述。希望對初學者有所幫助,也希望大家多多實踐。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/242676.html