将obj文件输出到Makefile中的obj目录

将obj文件输出到Makefile中的obj目录,makefile,Makefile,您好,我通过修改此示例编写了此Makefile: 它的工作方式如下。下面的类被编译成一个可执行的“myprogram”,输出到bin目录中。唯一的问题是对象文件是在src文件夹中创建的,而不是在obj文件夹中创建的。如何修改此makefile,以便在obj文件夹中创建obj文件?多谢各位 /project Makefile /src Class1.cpp Class2.cpp main.c

您好,我通过修改此示例编写了此Makefile:

它的工作方式如下。下面的类被编译成一个可执行的“myprogram”,输出到
bin
目录中。唯一的问题是对象文件是在
src
文件夹中创建的,而不是在
obj
文件夹中创建的。如何修改此makefile,以便在
obj
文件夹中创建
obj
文件?多谢各位

 /project
        Makefile

        /src
            Class1.cpp
            Class2.cpp
            main.cpp
        /obj

        /bin
            myProgram
        /inc
            Class1.h
            Class2.h

尝试以下方法:

OUT_DIR=obj
program_bare_OBJS := $(program_C_OBJS) $(program_CXX_OBJS)
program_OBJS=$(addprefix $(OUT_DIR)/,$(program_bare_OBJS))

尝试以下方法:

OUT_DIR=obj
program_bare_OBJS := $(program_C_OBJS) $(program_CXX_OBJS)
program_OBJS=$(addprefix $(OUT_DIR)/,$(program_bare_OBJS))

首先,您可以使用,例如,将源文件目录替换为目标文件目录:

program_OBJS  = $(subst $(SRC_DIR),$(OBJ_DIR),$(program_C_OBJS))
program_OBJS += $(subst $(SRC_DIR),$(OBJ_DIR),$(program_CXX_OBJS))
当然,您现在需要为对象文件创建添加一个目标,否则这些目标将不会放在正确的位置:

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
    $(CC) $(CFLAGS) -c -o $@ $<

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    $(CXX) $(CXXFLAGS) -c -o $@ $<
$(OBJ\u DIR)/%.o:$(SRC\u DIR)/%.c
$(CC)$(CFLAGS)-c-o$@$<
$(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp
$(CXX)$(CXXFLAGS)-c-o$@$<

首先,您可以使用,例如,将源文件目录替换为目标文件目录:

program_OBJS  = $(subst $(SRC_DIR),$(OBJ_DIR),$(program_C_OBJS))
program_OBJS += $(subst $(SRC_DIR),$(OBJ_DIR),$(program_CXX_OBJS))
当然,您现在需要为对象文件创建添加一个目标,否则这些目标将不会放在正确的位置:

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
    $(CC) $(CFLAGS) -c -o $@ $<

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    $(CXX) $(CXXFLAGS) -c -o $@ $<
$(OBJ\u DIR)/%.o:$(SRC\u DIR)/%.c
$(CC)$(CFLAGS)-c-o$@$<
$(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp
$(CXX)$(CXXFLAGS)-c-o$@$<

你好,Joachim,谢谢。我还认为现在必须为对象文件添加单独的目标。如果你能简单地描述一下你在哪里取得的成就,那就太好了,尽管对我来说,这或多或少也很清楚。ps.
$(OBJ_DIR)/%是怎么回事?o:
目标被执行了,我以前没有将它指定为依赖项?嗨,Joachim,谢谢。我还认为现在必须为对象文件添加单独的目标。如果你能简单地描述一下你在哪里取得的成就,那就太好了,尽管对我来说,这或多或少也很清楚。ps.
$(OBJ_DIR)/%是怎么来的?o:
目标被执行了,我以前没有将它指定为依赖项?