hello.c
#include#include"function.h"
int main()
function.c
#includeint fun1()
int fun2()
int fun3()
function.h
#ifndef _fun_h
#define _fun_h
int fun1(void);
int fun2(void);
int fun3(void);
#endif
一般寫法
gcc -o hello hello.c function.c -i.
makefile的簡單寫法(建立乙個名為makefile.txt的檔案)
hello: hello.c function.c
gcc -o hello hello.c function.c -i.
執行makefile
make -f makefile.txt
用變數
target = hello
cc = gcc
cflags = -i.
$(target): hello.c function.c
gcc -o $(target) hello.c function.c $(cflags)
標頭檔案影響,生成目標檔案
這一段會生成中間檔案
target = hello
cc = gcc
cflags = -i.
deps = function.h
%.o: %.c $(deps)
$(cc) -c -o $@ $< $(cflags)
$(target): hello.c function.c
$(cc) -o $@ $^ $(cflags)
需要清除目標檔案
clean:
rm -f $(target) *.o
clean不起作用,真是奇怪了(起作用,make -f makefile.txt clean)輸入的姿勢不正確
target = hello
idir = ../include
cc = gcc
cflags = -i$(idir)
odir = obj
ldir = ../lib
libs = -lm
_deps = function.h
deps = $(patsubst %,$(idir)/%,$(_deps))
_obj = hello.o function.o
obj = $(patsubst %,$(odir)/%,$(_obj))
$(odir)/%.o: %.c $(deps)
$(cc) -c -o $@ $< $(cflags)
$(target): $(obj)
$(cc) -o $@ $^ $(cflags) $(libs)
.phony: clean
clean:
rm -f $(target) $(odir)/*.o *~ $(idir)/*~
以上是最強版本,7月多的草稿,拖到現在,我已經不知道寫的啥了,哈哈哈 Makefile檔案編寫
1 基本大全教程 2 四個賦值的區別 是最基本的賦值 是覆蓋之前的值 是如果沒有被賦值過就賦予等號後面的值 是新增等號後面的值其中 和 的區別是 立馬賦值,是整個makefile檔案讀取完後賦值。1 make會將整個makefile展開後,再決定變數的值。也就是說,變數的值將會是整個makefile...
Makefile檔案編寫
main3.c 1 include 2 include static lib.h 3 include fun.h 4 5int main void static lib.h和 1 extern int add int a,int b 2 extern int sub int a,int b 3 ex...
makefile檔案編寫
make f makefile檔名 選項 巨集定義 目標 idirname 指定被包含的makefile所在目錄 w 如果make在執行時改變目錄,列印當前目錄名 d 列印除錯資訊 k 用該選項,即使make程式遇到錯誤也會繼續向下執行 1 顯式規則 用於描述系統中模組之間的相互依賴關係,以及產生目...