在这个示例的Makefile中,如果你想要添加创建目录的逻辑,可以像下面这样修改:
CC = gcc
ECHO = echo
SUB_DIR = core/ sample/
ROOT_DIR = $(shell pwd)
OBJS_DIR = $(ROOT_DIR)/objs
BIN_DIR = $(ROOT_DIR)/bin
BIN = nty_server nty_client nty_bench nty_server_mulcore nty_http_server nty_mysql_client nty_mysql_oper nty_websocket_server nty_http_server_mulcore ntyco_httpd nty_rediscli
FLAG = -lpthread -O3 -lcrypto -lssl -lmysqlclient -lhiredis -ldl -I $(ROOT_DIR)/core -I /usr/include/mysql/ -I /usr/local/include/hiredis/
CUR_SOURCE = ${wildcard *.c}
CUR_OBJS = ${patsubst %.c, %.o, %(CUR_SOURCE)}
export CC BIN_DIR OBJS_DIR ROOT_IDR FLAG BIN ECHO EFLAG
all : create_dirs $(SUB_DIR) $(BIN)
.PHONY : all
create_dirs:
@if [ ! -d "objs" ]; then \
mkdir -p objs; \
fi
@if [ ! -d "bin" ]; then \
mkdir -p bin; \
fi
$(SUB_DIR) : create_dirs
make -C $@
$(BIN) : create_dirs
# 添加编译命令来构建可执行文件,例如:
$(CC) $@.c $(FLAG) -o $(BIN_DIR)/$@
ECHO :
@echo $(SUB_DIR)
以上示例在Makefile中添加了create_dirs
目标,在all
目标之前调用create_dirs
来确保目录存在。然后,在编译可执行文件时也调用了create_dirs
目标,以确保将可执行文件放入正确的目录中。
请根据你的具体需求和项目结构适配以上示例。希望对你有所帮助!
内容由零声教学AI助手提供,问题来源于学员提问