我是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 $@ $<
答案 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 $@