2016-01-05 3 views
0

Я новичок в make-файлах и хочу сохранить все мои объектные файлы в своем собственном каталоге. Я гугл много и пришел к такому решению:makefile для создания собственного каталога для объектных файлов, не работающих

CXX = clang++ 

# compiler flags 
CXXFLAGS = -O3 -Wall -Werror -std=c++11 
CFLAGS_SFML = -lsfml-graphics -lsfml-window -lsfml-system 
SRCS = getInput.cpp createOutput.cpp main.cpp 
OBJDIR = obj 
OBJS = $(addprefix $(OBJDIR)/, SRCS:.cpp=.o) 

all: program.exe 

program.exe: $(OBJS) 
    $(CXX) $(CXXFLAGS) -o program.exe $(OBJS) $(CFLAGS_SFML) 

$(OBJDIR)/%.o: %.cpp 
    $(CXX) $(CXXFLAGS) -c $< -o [email protected] 

Когда я пытаюсь запустить сборочный файл, я получаю эту ошибку:

makefile:12: *** target pattern contains no `%'. Stop.

Кажется, эта ошибка довольно часто и не говорят подробно о том, что не так. Было бы здорово, если бы кто-нибудь мог мне помочь.

+0

Являются ли ваши источники .c файлов или .cpp? Вы упоминаете одно в une месте, а другое несколько строк ниже – marom

+0

Извините, это была только опечатка при написании вопроса. Это cpp – Jonas

+0

@Jonas $ (XX) и $ (CC) также не определены в этом Makefile. – sanjay

ответ

1

Проблема с OBJS = $(addprefix $(OBJDIR)/, SRCS:.cpp=.o)

Попробуйте это. Сначала вам нужно также создать каталог obj.

CXX = clang++ 

# compiler flags 
CXXFLAGS = -O3 -Wall -Werror -std=c++11 
CFLAGS_SFML = -lsfml-graphics -lsfml-window -lsfml-system 
SRCS = main.cpp 
OBJDIR = obj 
OBJS = $(addprefix $(OBJDIR)/, $(SRCS:.cpp=.o)) 


all: program.exe 

program.exe: $(OBJS) 
    $(CXX) $(CXXFLAGS) -o program.exe $(OBJS) $(CFLAGS_SFML) 

$(OBJDIR)/%.o: %.cpp 
    $(CXX) $(CXXFLAGS) -c $< -o [email protected] 

Для получения дополнительной информации используйте this.

+0

Спасибо, что решил мою проблему. Великий. Просто последнее, он жалуется, что каталог «obj» не существует. Поэтому, когда я добавляю его вручную, все работает нормально. Но есть ли более элегантное решение? – Jonas

+0

@ Jonas Я не эксперт в makefile. Вы можете обратиться к этой книге http://www.oreilly.com/openbook/make3/book/index.csp. Отметьте как решение и upvote: P – sanjay

+0

Я предлагаю вам использовать некоторый инструмент IDE или buil, например CMake. Потому что лучше тратить время на код, а строить систему – sanjay