gccのMakerFileが下記エラーになります。
「hogeに必要なターゲット `obj/main.o' を make するルールがありません」
試しに「$(OBJ_DIR)/%.o:」の「%」を「$(OBJ_DIR)/main.o:」とすると
上記エラーは解消されるので「%」が動作していないように思えます。
(次のオブジェクトファイルでエラーになりますが…)
アドバイスをいただけると助かります。
よろしくお願いいたします。
CC = gcc
CFLAGS = -MMD -MP -O3 -Wall -fPIC -std=c99
LDFLAGS =
LIBS = ./core/libhoge.a
INCLUDE = ./src/
SRC_DIR = ./src
OBJ_DIR = ./obj
SOURCES = $(shell find $(SRC_DIR)/* -name *.c)
OBJS = $(addprefix $(OBJ_DIR)/, $(notdir $(patsubst %.c, %.o, $(SOURCES))))
TARGET = hoge
DEPENDS = $(OBJS:.o=.d)
#$(warning $(OBJS))
all: $(TARGET)
$(TARGET): $(OBJS) $(LIBS)
$(CC) $(LDFLAGS) -o $@ $^
$(OBJ_DIR)/%.o: %.c
@if [ ! -d $(OBJ_DIR) ]; \
then echo "mkdir -p $(OBJ_DIR)"; mkdir -p $(OBJ_DIR); \
fi
$(CC) $(CFLAGS) -I $(INCLUDE) -o $@ -c $<
clean:
$(RM) $(OBJS) $(TARGET) $(DEPENDS)
-include $(DEPENDS)
.PHONY: all clean