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