我想创建对象创建所需的所有目录。这是我的项目结构:
Project/
src/
main.cc
graphics/
window.h
window.cc
math/
vec3.h
vec3.cc
Makefile
这是我的Makefile:
CXX = g++
CXXFLAGS = -Wall -Wno-write-strings -std=c++11
LDLIBS = -lglfw3 -lGLEW -lGLU -lGL -lX11 -lXi -lXrandr -lXxf86vm -lXinerama -lXcursor -lpthread
SRC_DIR = src/ src/graphics/ src/math/
OBJ_DIR = bin
LIB_DIR = -L/usr/lib
INC_DIR = -L/usr/include
SOURCE = $(wildcard $(SRC_DIR)/*.cc)
OBJECTS = ${SOURCE:%.cc=$(OBJ_DIR)/%.o}
EXECUTABLE = application
all: init $(OBJECTS) $(EXECUTABLE)
${EXECUTABLE}: $(OBJECTS)
$(CXX) $(LDFLAGS) $(LIB_DIR) -o $@ $(OBJECTS) $(LDLIBS)
$(OBJ_DIR)/%.o: %.cc
$(CXX) $(INC_DIR) -c $< -o $@
init:
@echo $(SRC_DIR)
@echo $(OBJ_DIR)
mkdir -p "$(addprefix $(OBJ_DIR)/,$(SRC_DIR))"
clean:
rm -rf $(OBJ_DIR) $(EXECUTABLE)
我想创建bin
,bin/src/
,bin/src/graphics
和bin/src/math
目录。
在目标init
我已完成mkdir -p "$(OBJ_DIR)/$(SRC_DIR)"
,但仅创建bin/src src/graphics src/math
而不是bin/src bin/src/graphics/ bin/src/math
。如何将bin
前缀添加到我正在创建的文件夹中?
答案 0 :(得分:2)
使用foreach:
init:
$(foreach d, $(SRC_DIR), mkdir -p $(addprefix $(OBJ_DIR)/,$(d));)