这是我的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.oxmlparser.o规则之后,也许您的makefile中有一些杂乱的TAB字符,但您粘贴到此问题的makefile中没有显示这些字符?

关于c++ - 为什么我的makefile没有生成目标文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59056386/

10-11 23:12