Cpp-Argument-Parser/Makefile
2022-07-25 20:57:57 -06:00

67 lines
1.4 KiB
Makefile

BUILD_DIR = bin
SOURCE_DIR = Src
HEADER_DIR = Inc
HEADER_INSTALL_DIR = /usr/local/include
INSTALL_DIR = /usr/local/lib
LIB_NAME = argParser
LIB_FILE_NAME = lib$(LIB_NAME).a
OPT = -O2
CC = gcc
CXX = g++
INCS = \
-IInc
C_SOURCES = $(wildcard $(SOURCE_DIR)/*.c)
CXX_SOURCES = $(wildcard $(SOURCE_DIR)/*.cpp)
OBJECTS = $(addprefix $(BUILD_DIR)/, $(notdir $(C_SOURCES:.c=.o)))
OBJECTS += $(addprefix $(BUILD_DIR)/, $(notdir $(CXX_SOURCES:.cpp=.o)))
CFLAGS = $(OPT) $(INCS) -Wall
CXXFLAGS = -std=c++17 $(OPT) $(INCS) -Wall
HEADERS = $(wildcard $(HEADER_DIR)/*.h)
CP = cp
MKDIR = mkdir -p
ARFLAGS = rvc
all: $(BUILD_DIR)/$(LIB_FILE_NAME)
$(BUILD_DIR)/$(LIB_FILE_NAME): $(OBJECTS)
$(AR) $(ARFLAGS) $@ $^
$(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.c | $(BUILD_DIR)
$(CC) -c $< $(CFLAGS) -o $@
$(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.cpp | $(BUILD_DIR)
$(CXX) -c $< $(CXXFLAGS) -o $@
$(BUILD_DIR):
$(MKDIR) $@
test: all
$(CXX) test.cpp $(CXXFLAGS) -l$(LIB_NAME) -L$(BUILD_DIR) -o $(BUILD_DIR)/test
$(BUILD_DIR)/test
test_installed:
$(CXX) test.cpp $(CXXFLAGS) -l$(LIB_NAME) -o $(BUILD_DIR)/test
$(BUILD_DIR)/test
install:
$(CP) $(BUILD_DIR)/$(LIB_FILE_NAME) $(INSTALL_DIR)
$(CP) $(HEADERS) $(HEADER_INSTALL_DIR)
uninstall:
$(RM) $(INSTALL_DIR)/$(LIB_FILE_NAME)
$(RM) $(addprefix $(HEADER_INSTALL_DIR)/, $(notdir $(HEADERS)))
clean:
$(RM) -r $(BUILD_DIR)
.PHONY: test install uninstall clean