makefile模板。
# Compiler and flags
CXX = g++
CPPFLAGS = -std=c++11 -Wall -g
LINK = ar rcs
all: target
LIBS = lib1.a
INCLUDE_DIR = -I/
#### lib1 ##########
LIB1_DIR = src/lib1_dir
INCLUDE_DIR += -I$(LIB1_DIR)
lib1_cpp = $(wildcard $(LIB1_DIR)/*.cpp)
lib1_o := $(lib1_cpp:.cpp=.o)
lib1.a: ${lib1_o}
${LINK} $@ $^
# 这是一个通用的模板方法,指示了TARGET_DIR文件夹下的.cpp文件如何生成.o文件。
# $^ 表示所有的依赖项列表。在一个规则中,它会展开为所有在冒号后面出现的依赖项的列表,以空格分隔。
# $@ 表示规则中的目标。在一个规则中,它会展开为规则的目标文件名。
$(LIB1_DIR)/%.o: $(LIB1_DIR)/%.cpp
${CXX} ${CPPFLAGS} -I${LIN1_INCLUDE} -c $^ -o $@
#### target #########
TARGET_DIR = src/target_dir
target_cpp := $(wildcard $(SERVER_DIR)/*.cpp)
target_o := $(target_cpp:.cpp=.o)
xidserver: ${target_o} ${LIBS}
${XIDS_CXX} ${XIDS_CPPFLAGS} ${INCLUDE_DIR} -o $@ $^
$(TARGET_DIR)/%.o: $(TARGET_DIR)/%.cpp
${CXX} ${CPPFLAGS} ${INCLUDE_DIR} -c $^ -o $@
.PHONY: clean
clean:
rm -f $(LIB1_DIR)/*.o
rm -f $(TARGET_DIR)/*.o
# 好用的内置方法
# 可以自动获取SERVER_DIR文件夹下所有cpp文件路径。
target_cpp := $(wildcard $(SERVER_DIR)/*.cpp)
# 可以用来查看xidserver_cpp变量的值,调试的时候非常好用。
$(info "info: $(target_cpp)")
2110

被折叠的 条评论
为什么被折叠?



