【发布时间】:2020-07-11 12:40:20
【问题描述】:
我只是想为一个小型 C++ 项目编写一个快速的 Makefile,但是当我尝试构建时,make 说:
没有规则使目标“obj/main.o”
即使我的隐含规则应该涵盖该文件。我见过其他人忘记了斜线或其他东西,但我没有看到这个 Makefile 的问题:
.PHONY: run, clean
SRCDIR:=./src
OBJDIR:=./obj
BINDIR:=./bin
CC:=gcc
CXX:=g++
SRC:=$(shell find -name *.cpp)
HXX:=$(shell find -name *.hpp)
OBJ:=$(subst src/,obj/,$(SRC:%.cpp=%.o))
EXE:=main
CXXFLAGS:=-std=c++14 -Wall
$(EXE): $(OBJ)
@echo $(OBJ)
$(CXX) $(CXXFLAGS) $^ -o $(BINDIR)/$@
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/%.hpp
$(CXX) $(CXXFLAGS) -c $< -o $@
我在 Raspberry Pi 3 b 上使用 Raspberry Pi OS。
【问题讨论】:
-
一个猜测,但你的规则是
./obj/main.o你的依赖是obj/main.o -
遗憾的是,不是这样,如果我将 OBJDIR 更改为 obj 则相同,无论如何,谢谢。