2010-10-14 5 views
1

J'ai makefile comme suit:Erreur de compilation dans le Makefile, comprend ne se présente pas

CC = gcc 
CFLAGS = -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" $(INCLUDES) 
ifdef DEBUG 
CFLAGS += -g3 
endif 

INCLUDES = \ 
-I../config.include \ 
-I../log.include \ 
-I../services.include 

SRC_DIR = src 
BIN_DIR = bin 
BINARY = report 

SRCS = $(shell ls $(SRC_DIR)/*.cpp) 
OBJS = $(SRCS:%.cpp=%.o) 

all: $(OBJS) 
    @mkdir -p $(BIN_DIR) 
    $(CC) $(OBJS) -o $(BIN_DIR)/$(BINARY) 

clean: 
    rm -rf $(BIN_DIR) $(OBJS) 

Cependant, quand je lance make, je reçois l'erreur:

g++  -c -o src/report.o src/report.cpp 
src/report.cpp:40:20: error: log.h: No such file or directory 
src/report.cpp:41:28: error: services.h: No such file or directory 
src/report.cpp:41:28: error: config.h: No such file or directory 

Je sais pertinemment que les fichiers d'en-tête sont là, et qu'ils sont inclus correctement. Les chemins sont également corrects. Il y a quelque chose qui cloche avec le makefile, mais je n'arrive pas à comprendre quoi. Notez que bien que je mette CC = gcc, la sortie est toujours g ++.

Ce n'est pas une faute de frappe, c'est en fait la sortie que je reçois - encore une fois, je ne sais pas pourquoi.

Aide!

Répondre

2

Vous devez redéfinir CXXFLAGS et CXX et non CFLAGS et CC pour les fichiers .cpp.

Vérifiez la sortie de make -p et recherchez la règle %.o: %.cpp.

+0

Merci! Je n'ai pas beaucoup d'expérience avec Makefiles, mais ça aurait dû être un indice. – Sagar

0

Vous avez pas de cible pour les fichiers objets individuels ($(OBJS)), donc faire des recherches sa liste de règles implicites, dont un est de faire .o des fichiers à partir .cpp fichiers en utilisant le compilateur C++, qui est fixé par CXX (qui, par la valeur par défaut est probablement g ++).

Questions connexes