在Makefile中将形式c转换为c ++时的问题:'main.o'不需要创建目标'main.cpp'的规则。停止

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

我开始将代码形式从C更改为C ++。我的文件现在分别命名为.cpp和.hpp。

突然,我的Makefile不再起作用。现在的输出是:

make:***'man.o'不需要制定目标'main.cpp'的规则。停止。

也许有人知道我的makefile有什么问题:

#######################################################################################################################################

VERSION = 0.01
DEBUG   = -O3
CC      = gcc
#  CC   = g++
INCLUDE = -I/usr/local/include
CFLAGS  = $(DEBUG) -g -DVERSION=\"$(VERSION)\" -pthread $(INCLUDE) -fpermissive

LDFLAGS = -L/usr/local/lib -D_REENTRANT -lstdc++
LDLIBS  = -lm -lrt -lpthread -lbcm2835 -lpigpio -lpigpiod_if2 -lmariadbclient

#######################################################################################################################################

POOLDATA_INC=   pooldata.hpp

SRC=    main.cpp cthread.cpp csql.cpp ctemp.cpp ctimer.cpp

OBJ=    $(SRC:.cpp=.o)

pool:   $(OBJ) pooldata.hpp
        @echo [link]
        @$(CC) -o $@ $(OBJ) $(LDFLAGS) $(LDLIBS)

main.o:         main.cpp std.hpp $(POOLDATA_INC)

cthread.o:      cthread.cpp std.hpp $(POOLDATA_INC) cthread.hpp

csql.o:         csql.cpp std.hpp $(POOLDATA_INC) cthread.hpp csql.hpp

ctemp.o:        ctemp.cpp std.hpp $(POOLDATA_INC) cthread.hpp ctemp.hpp

ctimer.o:       ctimer.cpp std.hpp $(POOLDATA_INC) cthread.hpp ctimer.hpp

.cpp.o:
        @echo [CC] $<
        @$(CC) -c $(CFLAGS) $< -o $@


clean:
        @echo "[Clean]"
        @rm -f *.o
        @rm pool

.PHONY : all
all : clean pool

#######################################################################################################################################
c++ makefile
1个回答
0
投票

我发现了一些错字。Makefile现在可以完美运行了。谢谢大家。

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