目文件结构如下所示时:
project/
├── main.cpp
├── test.cpp
├── DIRA/
│ ├── A.cpp
│ └── A.h
├── DIRBLIB/
│ └── libB.so
└── include/
└── B.h
Makefile如下所示:
# 编译器设置
CXX = g++
CXXFLAGS = -std=c++11 -Wall
# 目录设置
DIRA = /path/to/DIRA
DIRBLIB = /path/to/DIRBLIB
INCDIR = /path/to/include
# 依赖库设置
LIBS = -L$(DIRBLIB) -lB
# 目标文件设置
OUTPUT = main
# 源文件列表
SRCS = main.cpp test.cpp $(DIRA)/A.cpp
# 目标文件列表
OBJS = $(SRCS:.cpp=.o)
# 链接生成可执行文件
$(OUTPUT): $(OBJS)
$(CXX) $(CXXFLAGS) -I$(INCDIR) -o $@ $^ $(LIBS)
# 编译生成目标文件
%.o: %.cpp
$(CXX) $(CXXFLAGS) -I$(INCDIR) -c $< -o $@
# 清理编译生成的文件
clean:
rm -f $(OBJS) $(OUTPUT)