C++ 将Makefile设置为在另一个目录中生成
假设我的Makefile与源文件位于同一个目录中,并且我希望将对象文件存储在obj/子目录中,将目标可执行文件存储在bin/子目录中C++ 将Makefile设置为在另一个目录中生成,c++,makefile,C++,Makefile,假设我的Makefile与源文件位于同一个目录中,并且我希望将对象文件存储在obj/子目录中,将目标可执行文件存储在bin/子目录中 src/ main.cpp test.cpp test.h /many other *.cpp files and headers/ Makefile obj/ bin/ 我的Makefile的问题是无法将OBJECTS变量 包含一个*.o文件列表,其名称与*.cpp文件相同,但位于OBJDIR子目录中
src/
main.cpp
test.cpp
test.h
/many other *.cpp files and headers/
Makefile
obj/
bin/
我的Makefile的问题是无法将OBJECTS变量
包含一个*.o文件列表,其名称与*.cpp文件相同,但位于OBJDIR子目录中
src/
main.cpp
test.cpp
test.h
/many other *.cpp files and headers/
Makefile
obj/
bin/
目前,它只有在我逐个命名所有对象文件时才起作用
CXX=g++
CXXFLAGS=-c -Wall
LDFLAGS=
SOURCES=$(wildcard *.cpp) # very convenient wildcard
BINDIR=bin
OBJDIR=obj
OBJECTS=$(OBJDIR)/main.o $(OBJDIR)/test.o # how do I make a wildcard here?
TARGET=$(BINDIR)/my_executable
all: $(SOURCES) $(TARGET)
$(TARGET): $(OBJECTS)
$(CXX) $(LDFLAGS) $(OBJECTS) -o $@
$(OBJECTS): $(OBJDIR)/%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
clean:
rm -rf $(OBJDIR)/$(OBJECTS) $(BINDIR)/$(TARGET)
CXX=g++
CXXFLAGS=-c-墙
LDFLAGS=
SOURCES=$(通配符*.cpp)#非常方便的通配符
BINDIR=bin
OBJDIR=obj
OBJECTS=$(OBJDIR)/main.o$(OBJDIR)/test.o#如何在这里生成通配符?
TARGET=$(BINDIR)/my\u可执行文件
全部:$(来源)$(目标)
$(目标):$(对象)
$(CXX)$(LDFLAGS)$(对象)-o$@
$(对象):$(OBJDIR)/%.o:%.cpp
$(CXX)$(CXXFLAGS)-c$<-o$@
清洁:
rm-rf$(OBJDIR)/$(对象)$(BINDIR)/$(目标)
请帮忙
谢谢大家! 与您的问题类似的问题已经存在于此网站: 无论哪种方式,像这样的事情都可以解决您的问题:
OBJ_FILES := $(addprefix obj/,$(notdir $(CPP_FILES:.cpp=.o)))
可能重复的