.phony : all
all : a.txt
all : b.txt
a.txt :
@echo
"this is $@"
b.txt :
@echo
"this is $@"
複製**
示例2--makefile**現同名命令
.phony : all
all :
@echo
"command-1"
all :
@echo
"command-2"
all :
@echo
"this is $@"
複製**
注意事項
示例3--使用include關鍵字時,出現同名命令
makefile檔案與1.mk檔案位於同乙個目錄下
makefile
.phony : all
all :
@echo
"this is $@"
include 1.mk
複製**
1.mk
all :
@echo
"this command from 1.mk"
複製**
#ifndef func_h
#define func_h
#define hello "hello world"
void foo();
#endif
複製**
func.c
#include "stdio.h"
#include "func.h"
void foo
()複製**
main.c
#include "stdio.h"
#include "func.h"
extern void foo();
int main
()複製**
makefile
srcs := $(wildcard *.c)
objs := $(srcs:.c=.o)
$(cc) -o $@ $^
$(rm)
@echo
"target ===> $@"
複製**
makefile等價於下面的檔案
srcs := $(wildcard *.c)
objs := $(srcs:.c=.o)
$(cc) -o $@ $^
$(rm)
@echo
"target ===> $@"
%.o : %.c
@echo
"rule"
$(cc) -c -o $@ $^
複製**
從以上makefile執行結果可以看到,cc、rm、以及%.o : %.c 呼叫的
通過使用$(.variables)可以檢視make中所有預定義的變數
示例5--獲取makefile中的預定義變數
all :
@echo
"$(.variables)"
複製**
示例6--改變預定義變數將改變隱式規則的行為
srcs := $(wildcard *.c)
objs := $(srcs:.c=.o)
cc := gcc
rm := rm -rf *.o
$(cc) -o $@ $^
$(rm)
@echo
"target ===> $@"
%.o : %.c
$(cc) -o $@ -c $^
複製**
編譯效率低下
隱式規則鏈
檢視make的隱式規則
%.o : %.c
$(cc) -o $@ -c $^
複製**
- 在makefile中定義模式為空(如:%.o:%c)
複製**
%.o : %.p
複製**
makefile的隱式規則
target exe source code hello.c objs source code c o target objs gcc o clean rm target objs 一上來直接展示乙份makefile 功能 從功能角度來說,這份makefile 可以編譯出對應的目標檔案,並且順利執行...
Make的隱式規則
隱式規則1 當依賴出現重名時,make將所有的依賴整合,形成最後的依賴。2 當目標中的命令出現重複時,make將發出警告,使用後來的命令執行結果來替換前面的命令執行結果,因此在makefile中使用include時應避免在include所包含的檔案中使用命令。隱式規則2 make會提供一些自定義的變...
筆記 隱式轉換規則
學習並背誦全文型別 undefined null string boolean number 值undefined null 所有字串 true false 所有數字 nan object的成員叫物件,包括array,function,math,date,json,regexp等除了原始值之外的所有...