目标文件需要放在不同的目录中

object files need to be placed in different directory

本文关键字:文件 目标      更新时间:2023-10-16

如果有人能帮助我与Makefile错误,我将不胜感激。我想将一个c++应用程序编译成一个共享库,并将编译后的对象*.o文件放在./sobjs目录下,如下所示。我遵循了几个例子来做到这一点,但是我仍然有问题,以获得这个正确的编译和链接器。

Makefile:

OBJS = a1.o a2.o a3.o a4.o a5.o
objects = sobj/$(OBJS)
all: $(objects)
        $(CXX) $(CXX_FLAGS) $(objects) -shared -o libname.so
$(objects) : | sobjs
sobjs:
        @mkdir -p $@
sobjs/%.o: %.cpp
        @echo $<
        $(CXX) -fPIC -c -o $@ $< $(CXX_FLAGS) $(MY_FLAGS) $(INCLUDE_DIRS)

我犯了一个错误。替换这个

objects = sobj/$(OBJS)

objects = $(patsubst %.o, sobjs/%.o,$(OBJS))

,现在可以正确编译文件