makefile 多个c++源文件编译出多个动态连接库

假设目前我有3个源文件

a.cpp b.cpp c.cpp

我通过以下语句编译出了3个目标文件 a.o/b.o/c.o

$(CXX) $(CXXFLAGS) $(main_lib_cpp) -c $<

 

现在问题是怎么写一个目标:规则,实现链接出a.so b.so c.so

 

参考如下:

#编译TARGET动态库
CXX=g++
CXXDYNA=-g -lpthread  $(LIB) -fPIC
CXXFLAGS=-g -lpthread $(INCLUDE) -fPIC
#添加头文件路径
INCLUDE=-I./ -I/data/include 
#添加动态库,这里的例子是libnettrans.so
LIB=-L/data/lib -lnettrans

#中间文件,如果a.so只需要a.o,那么就把这句话写到每一个TARGET前面
OBJECTS=a.o b.o c.o

#生成 a.so
TARGET=./a.so

$(TARGET):$(OBJECTS)
	$(CXX) -shared -o $(TARGET)  $(OBJECTS) $(CXXDYNA)

$(OBJECTS):%.o:%.cpp
	$(CXX) -c $(@F:.o=.cpp) -o $@ $(CXXFLAGS)



#生成 b.so
TARGET=./a.so

$(TARGET):$(OBJECTS)
	$(CXX) -shared -o $(TARGET)  $(OBJECTS) $(CXXDYNA)

$(OBJECTS):%.o:%.cpp
	$(CXX) -c $(@F:.o=.cpp) -o $@ $(CXXFLAGS)


#生成 c.so
TARGET=./a.so

$(TARGET):$(OBJECTS)
	$(CXX) -shared -o $(TARGET)  $(OBJECTS) $(CXXDYNA)

$(OBJECTS):%.o:%.cpp
	$(CXX) -c $(@F:.o=.cpp) -o $@ $(CXXFLAGS)


clean:
	rm -f $(OBJECTS) $(TARGET)

楼上的大哥 ,需要一个一个写吗?文件一多那就写晕了啊,有没有简便的方法

想到一个办法,在makefile写个shell 用for循环去编译,但makeshell我还不知道怎么写