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