如何编译驻留在Makefile中不同目录中的文件?

时间:2016-10-14 17:45:46

标签: makefile

我之前看过这个问题,但无法解读这些答案。

让我说我驻留在工作目录中,让我们称之为proj,这个proj目录包含src文件夹,其中包含所有* .cpp文件。我想编译保留在proj目录中的那些文件,因为将来我将创建bin目录并将* .o和二进制文件放在bin中。

所以我的proj目录目前包含:Makefile和src

到目前为止,我所做的是:

SOURCE = src

# This gives the path to the proj directory
CURRENT_DIR = $(shell pwd) 

# This gives list of all the *.cpp files
SRC = $(shell cd $(SOURCE) && echo *.cpp)

# Here all the name of the files stored in SRC are converted from *.cpp to *.o
OBJS = $(SRC:.cpp=.o)

.PHONY: all

all: $(TARGE)

# use the content of SRC to compile
$(TARGET): $(OBJS)
    $(info $(OBJS))

$(OBJS): $(SRC)
    $(CC) $(FLAGS) -c $?

当我尝试运行make命令时,它说

make:***没有规则来制作'xxx.cpp'所需的目标'xxx.cpp'。停止

现在我知道它想说的是什么。它给出了错误,因为虽然它知道文件的名称,但由于文件不在当前目录中,因此makefile不知道src文件夹,因此对* .cpp文件没有任何线索。

所以我的问题是:在makefile中是否有任何宏或技巧可以确保makefile在停留在当前目录中时看到src文件夹中的xxx.cpp(我不想在这里手动指定文件夹) ?

0 个答案:

没有答案