c++ - 子目录的Makefile目录创建

标签 c++ build makefile

我想创建创建对象所需的所有目录。这是我的项目结构:

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)

我想创建 binbin/src/bin/src/graphicsbin/src/math 目录。

在目标init处,我已经完成了mkdir -p "$(OBJ_DIR)/$(SRC_DIR)",但这只创建了bin/src src/graphics src/math 而不是 bin/src bin/src/graphics/bin/src/math。如何向我正在创建的文件夹添加 bin 前缀?

最佳答案

使用foreach :

init:
    $(foreach d, $(SRC_DIR), mkdir -p $(addprefix $(OBJ_DIR)/,$(d));)

关于c++ - 子目录的Makefile目录创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31359099/

相关文章:

c++ - .rc 文件中的 Windres 错误

java - 如何使用 Maven 创建具有依赖项的可执行/可运行 JAR?

css - Gatsby v2网站无法正确加载CSS

在某些设备上找不到 Android 资源

makefile - BoringSSL 的 undefined symbol

perl - 如何从 makefile 运行 Perl one liner?

c++ - Cygwin g++ 编译失败

c++ - 使用结构 C++ 进行转换

c++ - 重载 operator<< 以作为成员打印

makefile - 将qtcreator与Makefile项目一起使用