1

我是makefile的新手。我有一个 makefile,我希望它从多个 .cpp 文件生成一个共享库。但是下面的makefile只是基于同一个.cpp文件生成了不同的.so。任何人都可以帮忙吗?

    SRC_DIR = $(PROJECT_BASE_DIR)/src

    SRCFILES = $(wildcard $(SRC_DIR)/*.cpp)
    OBJFILES = $(patsubst     $(SRC_DIR)/%.cpp,$(BUILD_TARGET_DIR)/%.$(OBJ_EXTENSION),$(SRCFILES))

    ...

    ifeq ($(OS),$(OS_LINUX))
    $(CLIENTLIB): $(OBJFILES)
       gcc $(CXXFLAGS) -o $@ $< $(LINKER_FLAGS)

    $(OBJFILES): $(SRCFILES)           ==> I believe this is the line with problem.
       gcc $(CXXFLAGS) -c -o $@ $<
4

2 回答 2

2

目前,您正尝试在一个编译步骤中将所有 .cpp 文件转换为所有 .o 文件。

改变:

$(OBJFILES): $(SRCFILES)           ==> I believe this is the line with problem.
   gcc $(CXXFLAGS) -c -o $@ $<

至:

%.$(OBJ_EXTENSION): %.cpp
   gcc $(CXXFLAGS) -c -o $@ $<
于 2012-10-16T06:01:21.353 回答
0

这些是我在makefile中使用的规则,它们有效,希望它可以帮助你

CFILES      = $(wildcard *.c)
OBJS        = $(CFILES:%.c=%.o)
%.o: %.c
    $(CC) $(CFLAGS) -I$(INCLUDE) $< -o $@
于 2012-10-16T06:06:34.237 回答