makefile在不同目录下编译一个程序
前文
在实际项目开发过程中,经常会遇到一个目标文件需要使用不同目录下的源文件。如有个项目,构成如下所示:
-base
-base.cpp
-base.h
-src
-makefile
-%.cpp
-%.h
src目录下的源文件使用到了base库中的函数,因此在编译makefile时,需要用到base库,base库在另一个目录下,此时就需要使用混合编译的技巧。
正文
其实混合编译没什么技巧,只需要在编译时,将base库所在目录添加进makefile中即可。
CXXFALG = -m64 -Wall -std=c++11
BASE_PATH = ../base
OBJS = $(BASE_PATH)/base.o
test.o
TARGET = test
all:$(TARGET)
@echo "Done everything successfully"
$(TARGET): $(OBJS)
$(CC) $(CXXFALG) -I $(BASE_PATH) $(OBJS) -o $(TARGET)
%.o: %.cpp
$(CC) -c $(CXXFALG) -I $(BASE_PATH) $< -o $@
$(BASE_PATH)/%.o: $(BASE_PATH)/%.cpp
$(CC) -c $(CXXFALG) -I $(BASE_PATH) $< -o $@
.PHONY: clean clear
clean:
rm -rf *.o $(BASE_PATH)/*.o $(TARGET)
makefile文件里面,最重要的就是**-I**这个参数了,它表明程序在进行编译时,会去寻找除makefile所在目录外的其他目录文件,从而达到混合编译的效果。
评论
0 评论