为什么我的makefile不生成目标文件?

问题描述 投票:0回答:1

这是我的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文件。我看到其他帖子提出了这个问题,但到目前为止,对我来说没有任何帮助。

谢谢。

c++ makefile
1个回答
0
投票

基于make -d输出:

Must remake target 'ProjectXmlParser.o'.
Successfully remade target file 'ProjectXmlParser.o'.

似乎make认为您有建立此目标的空方法。在ProjectxXmlParser.oxmlparser.o规则之后,也许您的makefile中有一些杂乱的TAB字符,但您粘贴到此问题的makefile中没有显示这些字符?

© www.soinside.com 2019 - 2024. All rights reserved.