-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
67 lines (47 loc) · 1.57 KB
/
Makefile
File metadata and controls
67 lines (47 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# 设置最终目标文件名
TARGET := a.out
# 定义目录
SRC_DIR := src_chi_k
# SRC_DIR := src_demo
# SRC_DIR := src_n_site
BIN_DIR := bin
BUILD_DIR := build
# 查找所有源代码文件(.cpp)
SRC := $(shell find $(SRC_DIR) -type f -name *.cpp)
# 定义目标文件路径,源文件 (.cpp) 转换为目标文件 (.o)
OBJ := $(SRC:$(SRC_DIR)/%.cpp=$(BUILD_DIR)/%.o)
# 定义依赖文件路径 (.d)
DEP := $(OBJ:.o=.d)
# 查找所有头文件目录
INC_DIR := $(shell find $(SRC_DIR) -type d)
# 生成包含所有头文件目录的 -I 标志
INC_FLAG := $(addprefix -I,$(INC_DIR))
# 设置编译器
CXX := $(shell g++-15 --version >/dev/null 2>&1 && echo g++-15 || echo g++)
# 定义所需的库
ARMADILLO_LIB := -larmadillo
LAPACK_LIB := -llapack
BLAS_LIB := -lblas
GMP_LIB := -lgmp
GMPXX_LIB := -lgmpxx
GSL_LIB := -lgsl
BOOST_LIB := -lboost_mpi -lboost_serialization -lboost_filesystem -lboost_system
FFT_LIB :=
# 定义最终链接的所有库
ALL_LIBS := $(FFT_LIB)
# 编译器警告和调试选项
CXX_WARNINGS := -Wall -pedantic-errors
CXX_DEBUG := # 可以在这里启用调试选项
CXX_OPTIM := -O3 # 优化等级
CXX_DEP := -MMD # 生成依赖文件
CXXFLAGS := -std=c++11 $(CXX_DEBUG) $(CXX_WARNINGS) $(CXX_OPTIM) $(CXX_DEP) $(INC_FLAG)
$(BIN_DIR)/$(TARGET): $(OBJ)
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) $(OBJ) -o $@ $(ALL_LIBS)
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) -c -o $@ $<
.PHONY: clean
clean:
$(RM) -rf $(BUILD_DIR)/* $(BIN_DIR)/$(TARGET) $(BUILD_DIR) $(BIN_DIR) # 删除构建目录和可执行文件
-include $(DEP)