所謂通用,就是很多情況都適用的Makefile,在這個(gè)Makefile中你不用去理會(huì)哪個(gè)文件的編譯又要與哪些頭文件相關(guān)這些東東,它自己會(huì)自動(dòng)幫你相關(guān)起來,你只要把你的源代碼放在一起,它就自動(dòng)幫你編譯好了。我自己都在用,覺得很好用,因此介紹一下呵呵^_^
1. 通用的c項(xiàng)目
TARGET = //目標(biāo),即生成的可執(zhí)行文件的名字,如test
PREFIX_BIN = //執(zhí)行sudo make install后你的可執(zhí)行文件放的位置,如/usr/bin
CC = gcc
INCLUDES = //你要包含的頭文件所在的地方
LIBS = //你要用到的庫函數(shù)所在的地方
CFLAGS =-Wall -Werror
LINKFLAGS = //沒用過,我一般留空。
C_SOURCES = $(wildcard *.c) /*源文件,即你寫的那些.c文件所在的地方,這里為與Makefile在同一層,如果你要在Makefile同一層中的src文件夾中,即變成這樣:C_SOURCES = $(wildcard ./src/*.c)。注意,這里所有的當(dāng)前目錄是以Makefile所在的目錄為當(dāng)前目錄的。*/
C_OBJS = $(patsubst %.c, %.o, $(C_SOURCES))
.c.o:
$(CC) -c -o $*.o $(CFLAGS) $(INCLUDES) $*.c
compile: $(C_OBJS)
$(CC) $(LINKFLAGS) -o $(TARGET) $^ $(LIBS)
clean:
rm -f $(C_OBJS)
rm -f $(TARGET)
install: $(TARGET)
cp $(TARGET) $(PREFIX_BIN)
uninstall:
rm -f $(PREFIX_BIN)/$(TARGET)
rebuild: clean compile
后面的C++項(xiàng)目與C項(xiàng)目基本相同,就不多說了呵呵^_^
2. 通用的c++項(xiàng)目
TARGET =
PREFIX_BIN =
CC = gcc
CXX = g++
INCLUDES =
LIBS =
CFLAGS = -Wall -Werror
LINKFLAGS =
C_SOURCES = $(wildcard *.c)
C_OBJS = $(patsubst %.c, %.o, $(C_SOURCES))
CPP_SOURCES = $(wildcard *.cpp)
CPP_OBJS = $(patsubst %.cpp, %.o, $(CPP_SOURCES))
.c.o:
$(CC) -c -o $*.o $(CFLAGS) $(INCLUDES) $*.c
.cpp.o:
$(CXX) -c -o $*.o $(CFLAGS) $(INCLUDES) $*.cpp
compile: $(CPP_OBJS) $(C_OBJS)
$(CXX) $(LINKFLAGS) -o $(TARGET) $^ $(LIBS)
clean:
rm -f $(CPP_OBJS) $(C_OBJS)
rm -f $(TARGET)
install: $(TARGET)
cp $(TARGET) $(PREFIX_BIN)
uninstall:
rm -f $(PREFIX)/$(PREFIX_BIN)
rebuild: clean compile
聯(lián)系客服