Как делать адекватную отладку Make-файлов?
Сейчас сделал Makefile. Он естественно не работает и требуется отладка.
Выдаёт сообщения "Не требует выполнения команд". Хотя это надо сделать и тут без вариантов. Удаления файлов, timestamp и прочее не помогает.
При вводе параметра -d выводится тонны помойного текста с "Попытка применения неявной зависимости"/"Попытка применения ..." "Makefile.(какой-то вид расширения)".
Я не могу понять, что это всё означает. Информативности (как для меня) нету никакой абсолютно (Так как файлов с расширением, например, .mod или .ssh у меня в проекте нету).
В статьях/гайдах/рассказах всё сводится к использованию параметра -d для отладки и не более. Других вариантов обнаружить не удалось
Как при таких входных проводить отладку и выяснять причину проблемы в Makefile?
Вот файл НЕрабочий:
CC=g++
# TYPICAL FLAGS
FLAGS_1=-c -fPIC
# FOLDERS WITH FILES
HEADERS=include
SOURCE=src
LIBRARIES=lib
BASE_DIRECTORY=./
# EXECUTION FILE
EXEC=main
# .CPP file of library
LIB=mathFunctionsForL
$(EXEC): $(BASE_DIRECTORY)$(SOURCE)/$(EXEC).cpp $(BASE_DIRECTORY)$(LIBRARIES)/lib$(LIB).so
$(CC) $(BASE_DIRECTORY)$(SOURCE)/$(EXEC).cpp -I $(BASE_DIRECTORY)$(HEADERS) -o $(EXEC) -L. $(BASE_DIRECTORY)$(LIBRARIES)/lib$(LIB).so
$(BASE_DIRECTORY)$(LIBRARIES)/lib$(LIB).so: $(BASE_DIRECTORY)$(LIB).o
$(CC) -shared -o $(BASE_DIRECTORY)$(LIBRARIES)/lib$(LIB).so $(BASE_DIRECTORY)$(LIB).o
$(BASE_DIRECTORY)$(LIB).o: blank.c $(BASE_DIRECTORY)$(SOURCE)/$(LIB).cpp
$(CC) $(FLAGS_1) -I $(BASE_DIRECTORY)$(HEADERS) $(BASE_DIRECTORY)$(SOURCE)/$(LIB).cpp
blank.c:
echo "Hello World!" > ./text.txt
Рабочий файл
CC=g++
# TYPICAL FLAGS
FLAGS_1=-c -fPIC
# FOLDERS WITH FILES
HEADERS=include
SOURCE=src
LIBRARIES=lib
BASE_DIRECTORY=./
# EXECUTION FILE
EXEC=main
$(EXEC): $(BASE_DIRECTORY)$(SOURCE)/$(EXEC).cpp $(BASE_DIRECTORY)$(LIBRARIES)/libmath_ops.so
$(CC) $(BASE_DIRECTORY)$(SOURCE)/$(EXEC).cpp -I $(BASE_DIRECTORY)$(HEADERS) -o $(EXEC) -L. $(BASE_DIRECTORY)$(LIBRARIES)/libmath_ops.so
$(BASE_DIRECTORY)$(LIBRARIES)/libmath_ops.so: $(BASE_DIRECTORY)math_ops.o
$(CC) -shared -o $(BASE_DIRECTORY)$(LIBRARIES)/libmath_ops.so $(BASE_DIRECTORY)math_ops.o
$(BASE_DIRECTORY)math_ops.o: blank.c $(BASE_DIRECTORY)$(SOURCE)/math_ops.cpp
$(CC) $(FLAGS_1) -I $(BASE_DIRECTORY)$(HEADERS) $(BASE_DIRECTORY)$(SOURCE)/math_ops.cpp
blank.c:
echo "Hello World!" > ./text.txt
Вот вырезка из сообщения дебаггера (полностью скинуть нельзя из-за киллобайтного текста):
Попытка применения правила с образцом «Makefile.mydynamicCopy».
Отвержение невозможной неявной зависимости «Makefile.mydynamicCopy.S».
Попытка применения правила с образцом «Makefile.mydynamicCopy».
Отвержение невозможной неявной зависимости «Makefile.mydynamicCopy.mod».
Попытка применения правила с образцом «Makefile.mydynamicCopy».
Попытка применения неявной зависимости «Makefile.mydynamicCopy.sh».
Поиск правила с промежуточным файлом «Makefile.mydynamicCopy.sh».
Избежание рекурсивного вызова неявного правила.