我正在尝试将一堆对象文件链接到一个共享对象中。我使用 VPATH 指定了一些位于不同目录中的目标文件的位置。如果 .o 文件存在于该目录中,那么我会收到一条错误消息,指出 g++ 找不到 .o 文件。如果我删除其他目录中的目标文件,那么 GNU Make/GCC 会从 VPATH 指定的其他目录中的 .c 编译当前目录中的 .o。那么,即使目标文件存在于 VPATH 指定的其他目录中,如何更改我的 makefile 以便始终在当前目录中构建先决条件目标文件?
这是我的主要制作规则:
LD = g++ -g -shared
ALGOBJ = <a bunch of object files>
$(PROGRAM): $(ALGOBJ)
$(LD) -Wl,-soname -Wl,.so -Wl,--no-undefined $(LDPTHS) -o $(PROGRAM) $(ALGOBJ)