При тестировании с makefile выдает ошибки

cc -c -Wall -Werror -I thirdparty/ -I src -MP -MMD test/test_main.c -o obj/test/test_main.o -lm
cc -c -Wall -Werror -I thirdparty/ -I src -MP -MMD test/test_geometry.c -o obj/test/test_geometry.o -lm
make: Circular test <- test dependency dropped.
cc -I thirdparty/ -I src -MP -MMD obj/test/test_main.o obj/test/test_geometry.o obj/src/libgeometry/lib_calc_trans.o obj/src/libgeometry/lib_main_chek.o obj/src/libgeometry/libmainchek.o -o test -lm
/usr/bin/ld: cannot open output file test: Is a directory
collect2: error: ld returned 1 exit status
make: *** [makefile:52: test] Error 1
Error: Process completed with exit code 2.

В чем они заключаются и как их пофиксить?

APP_NAME = geometry
LIB_NAME = libgeometry
TEST_NAME = test

CFLAGS = -Wall -Werror
CPPFLAGS = -I src -MP -MMD
LBOFLAGS = -lm

OBJ_DIR = obj
SRC_DIR = src
TEST_DIR = test

TEST_PATH = $(TEST_NAME)
APP_PATH = $(APP_NAME)
LIB_PATH = $(OBJ_DIR)/$(SRC_DIR)/$(LIB_NAME)/$(LIB_NAME).a

SRC_EXT = c

APP_SOURCES = $(shell find src/geometry -name '*.$(SRC_EXT)')
APP_OBJECTS = $(APP_SOURCES:$(SRC_DIR)/%.$(SRC_EXT)=$(OBJ_DIR)/$(SRC_DIR)/%.o)

TEST_SOURCES = $(shell find test -name '*.$(SRC_EXT)')
TEST_OBJECTS = $(TEST_SOURCES:test/%.c=obj/test/%.o)

LIB_SOURCES = $(shell find $(SRC_DIR)/$(LIB_NAME) -name '*.$(SRC_EXT)')
LIB_OBJECTS = $(LIB_SOURCES:$(SRC_DIR)/%.$(SRC_EXT)=$(OBJ_DIR)/$(SRC_DIR)/%.o)

DEPS = $(APP_OBJECTS:.o=.d) $(LIB_OBJECTS:.o=.d) $(TEST_OBJECTS:.o=.d) 

.PHONY: test clean
all: $(APP_PATH)

-include $(DEPS)

$(APP_PATH): $(APP_OBJECTS) $(LIB_PATH)
    $(CC) $(CFLAGS) $(CPPFLAGS) $^ -o $@ $(LBOFLAGS) $(LDLIBS) -lm

$(LIB_PATH): $(LIB_OBJECTS)
    ar rcs $@ $^

$(OBJ_DIR)/%.o: %.c
    $(CC) -c $(CFLAGS) $(CPPFLAGS) -I thirdparty $< -o $@ -lm



test: $(TEST_PATH)

-include $(DEPS)

$(TEST_PATH): $(TEST_OBJECTS) $(LIB_PATH)
    $(CC) -I thirdparty/ $(CPPFLAGS) $(TEST_OBJECTS) $(LIB_OBJECTS) -o $@ $(LBOFLAGS)




.PHONY: clean
clean:
    $(RM) $(APP_PATH) $(LIB_PATH) $(TEST_PATH)
    find $(OBJ_DIR) -name '*.o' -exec $(RM) '{}' \;
    find $(OBJ_DIR) -name '*.d' -exec $(RM) '{}' \;

Ответы (0 шт):