linux下多個cpp文件的Makefile編譯

打包so文件

CC = g++

CFLAGS=-Wall -O2 -fPIC

TARGET = libbg.so

SRCS := $(wildcard *.cpp)  

OBJS := $(patsubst %cpp, %o, $(SRCS))  

all: $(TARGET)  


$(TARGET): $(OBJS)  
	$(CC) $(CFLAGS) -shared -o $@ $^
%.o:%.cpp
	$(CC) $(CFLAGS) -c $<

clean:  
	rm -f *.o $(TARGET) 

普通編譯

CC = g++

CFLAGS=-Wall -O2

TARGET = main

SRCS := $(wildcard *.cpp)  

OBJS := $(patsubst %cpp, %o, $(SRCS))  

all: $(TARGET)  

$(TARGET): $(OBJS)  
	$(CC) $(CFLAGS) -o $@ $^
%.o:%.cpp
	$(CC) $(CFLAGS) -c $<

clean:  
	rm -f *.o $(TARGET) 


其中

$@  表示目標文件

$^ 表示所有依賴項

$< 表示第一個文件

SRCS := $(wildcard *.cpp)  表示獲取當前目錄下的c文件集,放在變量SRCS中
OBJS := $(patsubst %cpp, %o, $(SRCS))  表示將對應的c文件名轉爲o文件後放在下面的OBJS變量中


再分享一個從大牛那裏要來的一個文件,不是很看得懂 先保留 以後作爲參考






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章