Makefile 无法创建目录

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

我正在创建一个 makefile 来编译我的项目,我希望它自己创建 /obj 和 /bin 目录。

我的第一次尝试是尝试将目录视为目标,但这没有用。现在我按照 here 中解释的步骤进行操作,但出现了这个错误;

make: *** No rule to make target 'obj/main.o', needed by 'bin/main.out'. Stop.

这是我的makefile:

bin = ./bin/
src = ./src/
obj = ./obj/

CXX = g++
CCFLAGS = -Wall -g -c
CXXFLAGS = -O3

HDRS = $(src)ShallowWater.h
OBJS = $(obj)main.o $(obj)TimeIntegrate.o $(obj)derivatives.o $(obj)SetInitialConditions.o $(obj)SetBoundaryConditions.o $(obj)SetParameters.o
LIBS = -lblas -lboost_program_options -fopenmp

$(bin)main.out: $(OBJS)
    @mkdir -p $(obj)
    $(CXX) -o $@ $^ $(LIBS)

$(obj)%.o: $(src)%.cpp $(HDRS)
    @mkdir -p $(obj)
    $(CXX) $(CXXFLAGS) -o $@ -c $<

我认为这一定与以下事实有关:如果目录尚不存在,它将 obj/main.o 视为文件名,而不是文件路径。

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