專案Makefile書寫示例 一

2021-07-11 01:44:17 字數 1097 閱讀 7831

現有如下檔案目錄,需要構建makefile檔案。

檔案之間的依賴關係為:

需要生成目標檔案為indexer queryone printindex query

所有.o檔案都依賴於freq_list.h 

queryone、worker、query還依賴於worker.h

按照常規寫法,先編譯生成.o檔案,再鏈結生成目標執行檔案

寫出的makefile為:

# makefile for programs to index and search an index.

flags= -wall -g

src = freq_list.c punc.c

obj = freq_list.o punc.o

all : indexer queryone printindex query

indexer : indexer.o $

gcc $ -o $@ indexer.o $

printindex : printindex.o $

gcc $ -o $@ printindex.o $

queryone : queryone.o worker.o $

gcc $ -o $@ queryone.o worker.o $

query : query.o worker.o $

gcc $ -o $@ query.o worker.o $

# separately compile each c file

%.o : %.c freq_list.h

gcc $ -c $<

queryone.o : worker.h

worker.o : worker.h

query.o : worker.h

clean :

-rm *.o indexer queryone printindex query

若還需要巨集定義等選項,可以在flags中新增,如-dmacro --werror -std=c99等

makefile語法示例

edit main.o kbd.o cc o edit main.o kdb.o main.o main.c defs.h cc c main.c kbd.o kbd.c defs.h command.h cc c kbd.c clean rm o edit makefile中使用變數 object...

Makefile示例學習

裸機程式中的makefile是把程式的編譯和鏈結過程分開的,編譯要使用編譯器gcc,鏈結使用鏈結器ld 示例 led.bin start.o arm linux ld ttext 0x0 o led.elf arm linux objcopy o binary led.elf led.bin arm...

書寫makefile的注意點

1 空格 定義乙個變數時用 foo 1 這種形式,1後面千萬不可以有空格,否則,foo的值為 1 等於號和1之間的空格有無,並沒有關係。2 ifeq ifeq的形式是 ifeq foo ar 此時會進行巨集擴充套件。ar 前的空格有無,並沒有關係。3 ifdef ifdef的形式是 ifdef fo...