makefile檔案編寫

2021-08-21 06:34:30 字數 1776 閱讀 3909

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 顯式規則 用於描述系統中模組之間的相互依賴關係,以及產生目...