Сбой компиляции при компиляции c ++

0

У меня есть Makefile:

TARGET  =   foobar
CXX     =   g++
CXXFLAGS =  -Wall -I./inc/
LINKER  =   $(CXX) -o
LFLAGS  =   -I./inc/

SRCDIR  =   src
INCDIR  =   inc
OBJDIR  =   obj
BINDIR  =   bin

SOURCES     :=  $(wildcard &(SRCDIR)/*.cpp)
INCLUDES    :=  $(wildcard $(INCDIR)/*.h)
OBJECTS     :=  $(SOURCES:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o)
rm          =   rm -f

$(info SOURCES [${SOURCES}])
$(info INCLUDES [${SOURCES}])
$(info OBJECTS [${OBJECTS}])

$(BINDIR)/$(TARGET): $(OBJECTS)
    @$(LINKER) $@ $(LFLAGS) $(OBJECTS)
    @echo "Linking complete!"

$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp
    @$(CXX) $(CXXFLAGS) -c $< -o $@
    @echo "Compiled "$<" successfully"

.PHONY: clean
clean:
    @$(rm) $(OBJECTS)
    @echo "Cleanup complete!"

.PHONE: remove
remove: clean
    @$(rm) $(BINDIR)/$(TARGET) 
    @echo "Exacutable removed!"

Моя структура папок:

src/somesources.cpp
inc/somesources.h
obj/
bin/
Makefile

Этот make файл работает безупречно с c файлами, но у меня возникают проблемы с c++. Может ли кто-то сказать разницу между c и c++ и где я ошибаюсь? Выходное сообщение, которое я получаю:

SOURCES []
INCLUDES []
OBJECTS []
g++: fatal error: no input files
compilation terminated.
  • 4
    &(SRCDIR) должно быть $(SRCDIR) - 12-я строка
  • 0
    ... здесь: SOURCES := $(wildcard &(SRCDIR)/*.cpp)
Показать ещё 2 комментария
Теги:
makefile

1 ответ

4

+ Изменить

SOURCES     :=  $(wildcard &(SRCDIR)/*.cpp)

в

SOURCES     :=  $(wildcard $(SRCDIR)/*.cpp)

Также,

.PHONE: remove

должно быть

.PHONY: remove

Ещё вопросы

Сообщество Overcoder
Наверх
Меню