64 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								# Makefile for base example
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								include ./make.h
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 目标和源文件  
							 | 
						|||
| 
								 | 
							
								TARGETS  = fork execlp  getSum
							 | 
						|||
| 
								 | 
							
								SOURCES  = $(wildcard $(SRC_DIR)/*.c)  # 找到所有的 .c 文件  
							 | 
						|||
| 
								 | 
							
								OBJECTS  = $(patsubst $(SRC_DIR)/%.c,%.o,$(SOURCES)) # 将 .c 替换为 .o  
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 调试标志
							 | 
						|||
| 
								 | 
							
								DEBUG_FLAGS = -g -O0
							 | 
						|||
| 
								 | 
							
								CFLAGS += $(DEBUG_FLAGS)  # 确保包含调试信息
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 默认目标  
							 | 
						|||
| 
								 | 
							
								all: $(TARGETS)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 调试目标(与preLaunchTask对应)
							 | 
						|||
| 
								 | 
							
								debug: CFLAGS += -DDEBUG -Wall -Wextra
							 | 
						|||
| 
								 | 
							
								debug: $(TARGETS)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 链接目标文件生成可执行文件  
							 | 
						|||
| 
								 | 
							
								fork: fork.o  
							 | 
						|||
| 
								 | 
							
									$(CC) -o fork fork.o  
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								execlp: execlp.o  
							 | 
						|||
| 
								 | 
							
									$(CC) -o execlp execlp.o  
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								getSum: getSum.o
							 | 
						|||
| 
								 | 
							
									$(CC) -o getSum getSum.o
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 从 .c 文件编译生成 .o 文件  
							 | 
						|||
| 
								 | 
							
								%.o: $(SRC_DIR)/%.c  
							 | 
						|||
| 
								 | 
							
									$(CC) $(CFLAGS) $(COMMON_INCLUDE_DIRS) -c $< -o $@  
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 清理目标
							 | 
						|||
| 
								 | 
							
								clean:  
							 | 
						|||
| 
								 | 
							
									$(RM) -f $(TARGETS) $(OBJECTS) *.o
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 运行目标
							 | 
						|||
| 
								 | 
							
								run-fork: fork
							 | 
						|||
| 
								 | 
							
									./fork
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								run-execlp: execlp
							 | 
						|||
| 
								 | 
							
									./execlp
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# GDB调试目标
							 | 
						|||
| 
								 | 
							
								gdb-fork: fork
							 | 
						|||
| 
								 | 
							
									gdb ./fork
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								gdb-execlp: execlp
							 | 
						|||
| 
								 | 
							
									gdb ./execlp
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								gdb-fork: fork
							 | 
						|||
| 
								 | 
							
									gdb ./fork
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								gdb-execlp: getSum
							 | 
						|||
| 
								 | 
							
									gdb ./getSum
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 安装目录结构(如果需要)
							 | 
						|||
| 
								 | 
							
								install-dirs:
							 | 
						|||
| 
								 | 
							
									mkdir -p $(SRC_DIR) $(BUILD_DIR)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								.PHONY: all debug clean run-fork run-execlp gdb-fork gdb-execlp install-dirs
							 |