这是我的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的项目正在使用。当我执行构建时,将创建main.o,但不会创建任何.o文件。我看到其他帖子提出了这个问题,但到目前为止,对我来说没有任何帮助。
谢谢。
最佳答案
基于make -d
输出:
Must remake target 'ProjectXmlParser.o'.
Successfully remade target file 'ProjectXmlParser.o'.
似乎make认为您有建立这个目标的空方。在
ProjectxXmlParser.o
和xmlparser.o
规则之后,也许您的makefile中有一些杂乱的TAB字符,但您粘贴到此问题的makefile中没有显示这些字符?关于c++ - 为什么我的makefile没有生成目标文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59056386/