为什么我的生成文件没有生成对象文件?

Why is my makefile not generating object files?

本文关键字:文件 对象 为什么 我的      更新时间:2023-10-16

这是我的制作文件:

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.oxmlparser.o规则之后,您的生成文件中有一些杂散的 TAB 字符,这些字符未显示在您粘贴到此问题中的生成文件中?