je le makefile suivant (fragment)Rectification des dépendances générées automatiquement (de gcc) en font
SRC_DIR = src
OBJ_DIR = obj
DEP_DIR = dep
BIN_DIR = .
SRC_FILES := $(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))
DEP_FILES := $(patsubst $(SRC_DIR)/%.cpp,$(DEP_DIR)/%.d,$(SRC_FILES))
# Development build directive
dev: $(DEP_FILES) $(OBJ_FILES)
$(CPPC) $(LIBS) $(FLAGS_DEV) $(OBJ_FILES) -o $(BIN_DIR)/$(PROJECT)
# Object file directives
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(DEP_DIR)/%.d
$(CPPC) -c $(FLAGS_DEV) $< -o [email protected]
# Dependency directives
$(DEP_DIR)/%.d: $(SRC_DIR)/%.cpp
$(CPPC) -MM -MD $< -o [email protected]
include $(DEP_FILES)
Quand je lance make dev
je vois les suivantes
makefile:59: dep/area.d: No such file or directory
makefile:59: dep/avatar.d: No such file or directory
makefile:59: dep/board.d: No such file or directory
makefile:59: dep/socket.d: No such file or directory
g++ -MM -MD src/socket.cpp -o dep/socket.d
g++ -MM -MD src/board.cpp -o dep/board.d
g++ -MM -MD src/avatar.cpp -o dep/avatar.d
g++ -MM -MD src/area.cpp -o dep/area.d
g++ -c -ggdb3 -ansi -Wall -Werror -pedantic-errors src/area.cpp -o obj/area.o
g++ -c -ggdb3 -ansi -Wall -Werror -pedantic-errors src/avatar.cpp -o obj/avatar.o
g++ -c -ggdb3 -ansi -Wall -Werror -pedantic-errors src/board.cpp -o obj/board.o
g++ -c -ggdb3 -ansi -Wall -Werror -pedantic-errors src/socket.cpp -o obj/socket.o
g++ -ggdb3 -ansi -Wall -Werror -pedantic-errors obj/area.o obj/avatar.o obj/board.o obj/socket.o -o ./game
Lors d'un changement src/socket.h
(un fichier sur lequel les autres dépendent tous) et en cours d'exécution make
, je m'attendais à ce qu'il reconstruise l'ensemble du projet, mais il n'émet qu'une seule action
g++ -ggdb3 -ansi -Wall -Werror -pedantic-errors obj/area.o obj/avatar.o obj/board.o obj/socket.o -o ./game
Je crois que je génère correctement les dépendances automatiques - donc j'ai l'impression que je ne les utilise pas correctement. Où ai-je mal tourné? Je sais que les erreurs makefile:59:...
sont un indice, mais je n'ai jamais travaillé avec des dépendances générées automatiquement auparavant.
Merci d'avance; À votre santé!
Merci pour l'astuce - Je termine en utilisant 'sed -i 's | \ (. * \) \. O: | $ (OBJ_DIR)/\ 1.o $ (OBJ_DIR)/\ 1.d: | ' $ @ '. À votre santé! –