Вот мой make-файл:
LIBS = libxml2.so.2.9.4
LDFLAGS = -lstdc++ -lpthread -lxml2
vpath %.hpp ./
vpath %.cpp ./
vpath %.h ./libxml2/include/libxml
all: KeyGenerator
KeyGenerator: main.o ProjectXmlParser.o xmlparser.o
g++ ${CXXFLAGS} ${LDFLAGS} -o KeyGenerator $+ ${LIBS}
main.o: main.cpp
ProjectXmlParser.o: ProjectXmlParser.cpp ProjectXmlParser.hpp
xmlparser.o: xmlparser.cpp xmlparser.hpp global.hpp
phony: clean
clean:
rm -f *.o
Выход:
/usr/bin/make -f Makefile CONF=Debug
g++ -g -Wall -std=gnu++11 -pthread -I./ -I./src -I./libxml2/include -lstdc++ -lpthread -lxml2 -o KeyGenerator main.o ProjectXmlParser.o xmlparser.o libxml2.so.2.9.4
g++: error: ProjectXmlParser.o: No such file or directory
g++: error: xmlparser.o: No such file or directory
Makefile:12: recipe for target 'KeyGenerator' failed
make: *** [KeyGenerator] Error 1
В каталоге проекта все мои файлы hpp и cpp находятся на одном уровне. У меня есть еще один проект под названием libxml, который я использую. Когда я делаю сборку, создается main.o, но ни один из файлов .o не создается. Я видел, как другие сообщения задают этот вопрос, но пока ничего не помогло мне.
Спасибо.
vpath
? - person Some programmer dude   schedule 26.11.2019make -d
и изучить вывод, чтобы выяснить, как make обрабатывает файлProjectXmlParser.o
. - person MadScientist   schedule 26.11.2019