0
Die Ausführung von make schlägt fehl, da die zuvor definierte Regel in der make-Datei nicht gefunden werden kann. Auch die „dir“ Regel funktioniert nur, wenn ich „mache dir“ verwenden, aber wenn ich es zu der zusammengesetzten Regel hinzugefügt listet die Dateien im Arbeitsverzeichnis ....Die generierte Makefile-Regel führt keine definierte andere Regel aus
make test_tester
dir
base_types.c dynamic_array.c gists hashtable.c linked_list.c Makefile Makefile_OLD object.c object_table.c out.txt READ_THIS.txt sstring.c tester.c tests ttime.c
build/test_tester.o
make: build/test_tester.o: Command not found
Makefile:7: recipe for target 'test_tester' failed
make: *** [test_tester] Error 127
CC=gcc
CFLAGS=-Wall -I ../include
TEST_DIR=tests
BUILD_DIR=build
test_tester:
dir
$(BUILD_DIR)/test_tester.o
$(BUILD_DIR)/tester.o
$(BUILD_DIR)/base_types.o
$(BUILD_DIR)/object.o
$(BUILD_DIR)/sstring.o
$(CC) $(CFLAGS) $(BUILD_DIR)/test_tester.o $(BUILD_DIR)/tester.o $(BUILD_DIR)/base_types.o \
$(BUILD_DIR)/object.o $(BUILD_DIR)/sstring.o
$(BUILD_DIR)/test_tester.o:
$(CC) $(CFLAGS) -c $(TEST_DIR)/test_tester.c -o [email protected]
$(BUILD_DIR)/tester.o: tester.c
$(CC) $(CFLAGS) -c tester.c -o [email protected]
$(BUILD_DIR)/base_types.o: base_types.c
$(CC) $(CFLAGS) -c base_types.c -o [email protected]
$(BUILD_DIR)/object.o: object.c
$(CC) $(CFLAGS) -c object.c -o [email protected]
$(BUILD_DIR)/sstring.o: sstring.c
$(CC) $(CFLAGS) -c sstring.c -o [email protected]
dir: mkdir -p $(BUILD_DIR)
.PHONY: clean
clean:
rm -f $(BUILD_DIR)/*.o
Sie haben keine zusammengesetzt Regel, Sie haben 'test_tester' Ziel ohne Voraussetzungen, nur eine lange Liste von Befehlen. https://www.gnu.org/software/make/manual/make.html#Rule-Introduction – melpomene
@melpomene Müssen die Voraussetzungen für die Regel das Build-Verzeichnis-Präfix haben? –
@eat_a_lemon Voraussetzungen sind in der gleichen Zeile wie das Ziel geschrieben, also meintest du test_tester: dir? Beim dir-target ist es umgekehrt, das mkdir muss in die nächste Zeile eingerückt werden – Ctx