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變量中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM