При попытке сделать, я получаю сообщение об ошибке: «Нет правила для цели» Объекты/main.o 'необходимы «CrowdSim». Примечание: это моя первая попытка makefile, и я следую пример hereПочему этот файл не работает?
Дополнительная информация:.
При попытке сделать, я получаю сообщение об ошибке: «Нет правила для цели» Объекты/main.o 'необходимы «CrowdSim». Примечание: это моя первая попытка makefile, и я следую пример hereПочему этот файл не работает?
Дополнительная информация:.
правило, как все мои .cc файлы хранятся в источнике, все мои .h файлы находятся в заголовках, и я хочу, чтобы поместить все мои файлы .o в объектах. это:
$(OBJDIR)/%.o: $(SRCDIR)/%.cc $(HDIR)/%.h
требует как предпосылки для существования. Если ни один из них не существует, то правило не соответствует и делает, будет игнорировать его и искать другое правило. В этом случае нет другого правила, поэтому make терпит неудачу.
Если вы не всегда имеют как .cc
и .h
файл каждый.o
файл, то вы не можете написать правила, как это.
Вместо этого, вы должны написать шаблонное правило так:
$(OBJDIR)/%.o: $(SRCDIR)/%.cc
$(CC) $(CFLAGS) -c -o [email protected] $<
Тогда вам придется объявить заголовочные файлы отдельно, как это:
$(OBJDIR)/vector.o: $(HDIR)/vector.h
и т.д. для любые заголовки. Вы можете рассмотреть возможность применения метода автоматического управления зависимостями, например this one.
Кстати, CC
и CFLAGS
предназначены для компиляторов C. Здесь у вас есть код на C++. По соглашению в make-файлах вы должны использовать CXX
и CXXFLAGS
для компиляторов C++.
Существуют ли файлы 'Source/main.cc' и' Headers/main.h'? – MadScientist
'main.cc' есть, но' main.h' нет. – Teofrostus