这个makefile出了什么问题

时间:2012-10-16 05:59:09

标签: c++ makefile

我是makefiles的新手。我有一个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 $@ $<

2 个答案:

答案 0 :(得分:2)

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

变化:

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

为:

%.$(OBJ_EXTENSION): %.cpp
   gcc $(CXXFLAGS) -c -o $@ $<

答案 1 :(得分:0)

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

CFILES      = $(wildcard *.c)
OBJS        = $(CFILES:%.c=%.o)
%.o: %.c
    $(CC) $(CFLAGS) -I$(INCLUDE) $< -o $@