В настоящее время я пытаюсь выполнить задачу 4 (speller) из курса CS50. Это первый набор проблем, когда у нас есть несколько файлов заголовков и несколько исходных файлов, поэтому они дали нам Makefile для использования, чтобы скомпилировать каждый файл .c в .o, а затем связать файлы .o для формирования скомпилированного двоичного файла.
Это make-файл
speller:
clang -fsanitize=signed-integer-overflow -fsanitize=undefined -ggdb3 -O0 -Qunused-arguments -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow -c -o speller.o speller.c
clang -fsanitize=signed-integer-overflow -fsanitize=undefined -ggdb3 -O0 -Qunused-arguments -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow -c -o dictionary.o dictionary.c
clang -fsanitize=signed-integer-overflow -fsanitize=undefined -ggdb3 -O0 -Qunused-arguments -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow -o speller speller.o dictionary.o
Вывод ls:
dictionaries dictionary.h keys speller speller.o dictionary.c dictionary.o Makefile speller.c texts
Когда я запускаю make впервые, он без проблем компилирует speller. Тем не менее, когда я делаю изменения в dictionary.c и сохраняю его (в частности, я специально облажал все свои вызовы printf () для printasdasdsa (), да, вы получаете его), и я запускаю make, он продолжает говорить make: 'speller' is up to date
, и просто отказывается перестраивать, хотя я внес изменения в источник dictionary.c.
Есть идеи, что не так с тем, как я строю спеллер? Что-то не так с моим make-файлом?
Я знаю, что есть способ принудительно перестроить make, передав флаг "-B", но принято ли всегда делать это таким образом, когда вы вносите изменения в свой код?
Это задание: https://docs.cs50.net/2019/x/psets/4/speller/hashtable/speller.html