61 lines
No EOL
1.8 KiB
Makefile
61 lines
No EOL
1.8 KiB
Makefile
#源文件目录
|
||
SRC_DIR := ./src
|
||
#头文件目录
|
||
INC_DIR := ./include
|
||
#输出文件目录
|
||
OUT_DIR := ./build
|
||
#目标文件(中间文件)目录
|
||
OBJ_DIR :=./build
|
||
#链接选项
|
||
LDFLAGS := $(shell pkg-config --static --libs glfw3)
|
||
#编译工具链
|
||
CC := g++
|
||
#输出文件命名
|
||
OUT := $(OUT_DIR)/lab2
|
||
|
||
#增加所有头文件所在的目录
|
||
# INC_DIR += ./include/glad
|
||
# INC_DIR += ./include/KHR
|
||
|
||
#获取头文件目录
|
||
CPP_FLAGS := $(foreach dir, $(INC_DIR), -I$(wildcard $(dir)))
|
||
|
||
#方法一: 将所有源文件的文件目录添加进来,就不用每增加一个文件都修改一下makefile文件
|
||
#SRC_DIR += ./src/
|
||
|
||
#获取所有cpp文件名
|
||
CPP_SRCS := $(foreach dir, $(SRC_DIR), $(wildcard $(dir)/*.cpp))
|
||
|
||
#方法二:将增加的文件(带目录)增加到源文件数组中,此操作不用增加源文件目录
|
||
# CPP_SRCS += ./src/sub_path1/*.cpp
|
||
# CPP_SRCS += ./src/sub_path2/*.cpp
|
||
# CPP_SRCS += ./src/sub_path....../*.cpp
|
||
# CPP_SRCS += ./src/sub_pathn/*.cpp
|
||
|
||
#生成所有的目标文件名
|
||
OBJ := $(addprefix $(OBJ_DIR)/, $(notdir $(CPP_SRCS:.cpp=.o)))
|
||
|
||
# 最终目标文件的生成(makefile 会将第一个target设为最终生成的目标文件
|
||
# 【当然这里可以不是可执行文件,它也可以是.o文件】),链接过程
|
||
# 这条语句的完全写法应该是:
|
||
# ./OUT/xxx.OUT: prerequisites1.o prerequisites2.o prerequisites3.o ...
|
||
# g++ prerequisites1.o prerequisites2.o prerequisites3.o ... -o ./OUT/xxx.OUT
|
||
$(OUT):$(OBJ)
|
||
$(CC) $^ -o $@ $(LDFLAGS)
|
||
|
||
#将所有的.cpp文件加载到当前的路径中
|
||
vpath %.cpp $(sort $(dir $(CPP_SRCS)))
|
||
#将所有的源文件编译生成响应的目标文件
|
||
$(OBJ_DIR)/%.o:%.cpp
|
||
$(CC) $(CPP_FLAGS) -c $< -o $@
|
||
|
||
nv:$(OUT)
|
||
prime-run ./$(OUT)
|
||
|
||
run:$(OUT)
|
||
./$(OUT)
|
||
|
||
.PHONY:clean
|
||
clean:
|
||
rm -rf ./${OUT_DIR}/*
|
||
rm -rf ./${OBJ_DIR}/*
|