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所在目录外的其他目录文件,从而达到混合编译的效果。


标题:makefile在不同目录下编译一个程序
作者:staymeloo7
联系方式:staycoolsun@gmail.com

    评论
    0 评论
avatar

取消