Linux 批量編譯目錄下文件的Makefile

發(fā)布時(shí)間:2011-2-27 15:48    發(fā)布者:hikesoso2010
關(guān)鍵詞: Linux , Makefile
1.在存放.c文件的目錄下編按如下方法編寫(xiě)Makefile文件:  

#Makefile start..  
CC := gcc #根據需要添加其它如XX := g++  
CFLAGS := -Wall -O -g #優(yōu)化,輸出調試信息,及所有警告  
TARGET :=argcv test hello unixio getuid #要編譯的目標名,文件名去后綴的  
#下面開(kāi)始一一編譯了  
all:$(TARGET)  
@echo compileing...  
%.o:%.c  
$(CC) $(CFLAGS) -c $< #發(fā)現用-c和-o都是輸出一樣的,有點(diǎn)不明白  
clean:  
rm -rf  $(TARGET)  
#end Makefile  

2.執行make,輸出結果:  
[savant@savant-host prog]$ make  
gcc  -Wall -O -g   
argcv.c   -o argcv  
gcc  -Wall -O -g   
test.c   -o test  
gcc  -Wall -O -g   
hello.c   -o hello  
gcc  -Wall -O -g   
unixio.c   -o unixio  
gcc  -Wall -O -g   
getuid.c   -o getuid  

3.另外,如果這個(gè)目錄是存放的一個(gè)項目的文件,所有的文件最終生成一個(gè)可執行文件,用下面的Makefile:  
CC = gcc  
LD = gcc  
CFLAGS = -Wall -c  
LDFLAGS = -lpthread #還可以加入INCLUDES和LIBS變量,視情況而定  
SRCS = $(wildcard *.c)  #SRCS的值就是當前面目錄下面所有的以.c結尾的源文件  
OBJS = $(patsubst %c,%o,$(SRCS))  #SRCS目錄下創(chuàng )建c文件相對的o文件  
TARGET = myapp   #最終鏈接生成的目標名  
.PHONY: all clean  
all: $(TARGET)  
$(TARGET): $(OBJS)  
$(LD) $(LDFLAGS) -o $@ $^  
%o: %c  
$(CC) $(CFLAGS) -o $@ $<  
clean:  
@rm -f *.o $(TARGET)  
編譯當前Makefile所在目錄下的所有.c文件  

執行  
make  
make clean
本文地址:http://selenalain.com/thread-56092-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
cqzy6666 發(fā)表于 2011-3-1 10:48:45
很好!1
ncchengang 發(fā)表于 2011-3-1 10:49:43
謝謝,
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页