first version of makefile

This commit is contained in:
gandc 2025-03-15 23:47:01 +03:00
commit e9a013f3e7
Signed by: gandc
GPG Key ID: 9F77B03D43C42CB4

53
Makefile Normal file
View File

@ -0,0 +1,53 @@
CC = gcc
CFLAGS = -Wall -O2 -Ilibmysyslog
LDFLAGS = -Lbuild -lmysyslog -lconfig
BUILD_DIR = build
SRCS_CLIENT = myRPC-client.c
SRCS_SERVER = myRPC-server.c
OBJS_CLIENT = $(BUILD_DIR)/myRPC-client.o
OBJS_SERVER = $(BUILD_DIR)/myRPC-server.o
TARGET_CLIENT = $(BUILD_DIR)/myRPC-client
TARGET_SERVER = $(BUILD_DIR)/myRPC-server
LIB_SRC = libmysyslog/libmysyslog.c
LIB_OBJ = $(BUILD_DIR)/libmysyslog.o
LIB_A = $(BUILD_DIR)/libmysyslog.a
.PHONY: all clean deb
all: $(BUILD_DIR) $(LIB_A) $(TARGET_CLIENT) $(TARGET_SERVER)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
# Компиляция объектного файла для myRPC-client
$(BUILD_DIR)/myRPC-client.o: myRPC-client.c | $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@
# Компиляция объектного файла для myRPC-server
$(BUILD_DIR)/myRPC-server.o: myRPC-server.c | $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@
# Компиляция объекта для libmysyslog
$(BUILD_DIR)/libmysyslog.o: $(LIB_SRC) | $(BUILD_DIR)
$(CC) $(CFLAGS) -fPIC -c $< -o $@
# Создание статической библиотеки libmysyslog.a
$(LIB_A): $(BUILD_DIR)/libmysyslog.o
ar rcs $@ $^
# Линковка myRPC-client
$(TARGET_CLIENT): $(OBJS_CLIENT)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
# Линковка myRPC-server
$(TARGET_SERVER): $(OBJS_SERVER)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
clean:
rm -rf $(BUILD_DIR)