Makefile:将所有文件编译到一个没有子文件夹的文件夹中

Makefile:将所有文件编译到一个没有子文件夹的文件夹中,makefile,Makefile,这是我的目录结构: Project | +---------------+----------------+ | | | Sources/ Temp/ Makefile |

这是我的目录结构:

                            Project
                              |
              +---------------+----------------+
              |               |                |
           Sources/         Temp/         Makefile
              |               |                
         +----+----+         *.o      
         |         |                         
       Test/    *.cpp
         |
        *.cpp
我正在尝试将每个
.cpp
编译到我的
Temp
目录中,但没有子文件夹

这是我的
Makefile

CC = g++
WARNING = -w
OPTIMIZATION = -O0
ARGUMENTS = -g

INCLUDES = -I Includes -I Sources
LIBS = -L

OBJDIR = Temp

SRC = $(wildcard Sources/*.cpp) $(wildcard Sources/*/*.cpp)
OBJECTS = $(SRC:%.cpp=$(OBJDIR)/%.o)


App: $(OBJECTS)
    $(CC) -o $@ $^


$(OBJDIR)/%.o : %.cpp
    $(CC) $(WARNING) $(OPTIMIZATION) $(ARGUMENTS) -c $< -o $@
我认为我需要使用
OBJECTS=$(SRC:%.cpp=$(OBJDIR)/$(%F).o)
,但我对
Makefile
是新手,我不知道如何才能做到这一点


有人有解决办法吗?

好的,我终于找到办法了。我从中找到了解决办法

解决方案是
$(addprefix$(OBJ_DIR)/,$(notdir$(SOURCES:.cpp=.o))
。看起来我必须使用
notdir
函数而不是
$(%F)
变量

g++ -w -O0 -g -c Sources/Main.cpp -o Temp/Sources/Main.o