นี่คือ makefile ของฉัน:
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 ที่ฉันใช้อยู่ เมื่อฉันทำ build main.o จะถูกสร้างขึ้น แต่ไม่มีการสร้างไฟล์ .o เลย ฉันเคยเห็นโพสต์อื่นที่ทำให้เกิดคำถามนี้ แต่จนถึงขณะนี้ยังไม่มีอะไรได้ผลสำหรับฉัน
ขอบคุณ
vpath
- person Some programmer dude   schedule 26.11.2019make -d
และตรวจสอบเอาต์พุตเพื่อค้นหาว่า make ปฏิบัติต่อไฟล์ProjectXmlParser.o
อย่างไร - person MadScientist   schedule 26.11.2019