1

私はメイクファイルが初めてです。Makefile があり、複数の .cpp ファイルから共有ライブラリを生成したい。しかし、次のメイクファイルは、同じ .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 ファイルを 1 つのコンパイル ステップですべての .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 に答える