Makefile:指定SRC和OBJ目录。

推荐:非常详尽的Makefile教程(链接)。

需求:

1、指定源代码目录./src,编译目录下所有.cpp文件;

2、指定目标文件目录./obj,存放编译生成的.obj文件;

3、.cpp文件名唯一,根据cpp文件名自动确定.o文件名。

实现(WSL-ubuntu 18.04):

1、获取源代码目录下源文件名:SRC = $(wildcard $(SRC_DIR)/*.cpp)

2、字符串替换获取目标文件名:OBJECTS = $(patsubst $(SRC_DIR)/%.cpp, %.o, $(SRC))

3、指定源代码默认搜索路径:VPATH = $(SRC_DIR)。如果不指定VPATH,需要在目标文件生成规则指定路径:

4、连接时为目标文件增加目录路径。

5、vpath %.o $(OBJ_DIR),避免每次make全量重新编译。 

完整的 Makefile:

CC = g++
CFLAGS = -lpthread

TARGET  = app
OBJ_DIR = ./obj
SRC_DIR = ./src

SRC = $(wildcard $(SRC_DIR)/*.cpp)
OBJECTS = $(patsubst $(SRC_DIR)/%.cpp, %.o, $(SRC))

VPATH = $(SRC_DIR)
vpath %.o $(OBJ_DIR)

all: $(TARGET)

$(TARGET) : $(OBJECTS)
	$(CC) -o $@ $(addprefix $(OBJ_DIR)/, $(OBJECTS)) $(CFLAGS)

%.o : %.cpp
	$(CC) -c $< -o $(OBJ_DIR)/$@

.PHONY : clean
clean:
	rm -rf $(TARGET) $(OBJ_DIR)/*.o ./*.o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值