# 编译器 CC = arm-linux-gnueabihf-gcc # C++编译器 CXX = arm-linux-gnueabihf-g++ # 编译选项 CFLAGS = -Wall -Wextra -g CXXFLAGS = -Wall -Wextra -g # 链接选项 LDFLAGS = # 源文件目录 SRC_DIR = ./ # 头文件目录 INC_DIR = include # 对象文件目录 OBJ_DIR = obj # 可执行文件名 TARGET = com_slave # 源文件列表 SOURCES = $(wildcard $(SRC_DIR)/*.c) $(wildcard $(SRC_DIR)/*.cpp) # 对象文件列表 OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(filter %.c,$(SOURCES))) \ $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(filter %.cpp,$(SOURCES))) # 默认目标 all: $(TARGET) # 编译规则 $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c @mkdir -p $(OBJ_DIR) $(CC) $(CFLAGS) -I$(INC_DIR) -c $< -o $@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp @mkdir -p $(OBJ_DIR) $(CXX) $(CXXFLAGS) -I$(INC_DIR) -c $< -o $@ # 链接规则 $(TARGET): $(OBJECTS) echo $(SOURCES) $(CC) $(LDFLAGS) $(OBJECTS) -o $@ # 清理规则 clean: rm -f $(OBJECTS) $(TARGET) # 重置规则 rebuild: clean all .PHONY: all clean rebuild