C++ 构建c++;在Linux中使用来自两个源目录的Make进行项目
我在Linux中有一个c++项目,其中源文件位于如下所示的两个目录中。目前,Makefile只编译源/目录中的文件,而不编译“/”目录中的文件。我尝试过许多黑客攻击,但都没有用。在编译source/中的源文件后,您如何指示Makefile编译“/”目录中的源文件,并将其放入obj/目录中? 我试了很多都没用 一个精明的人是受欢迎的 / 生成文件 file1.cpp 文件2.cpp 来源/ file30.cpp file31.cpp obj/ 文件30.o文件31.oC++ 构建c++;在Linux中使用来自两个源目录的Make进行项目,c++,linux,makefile,C++,Linux,Makefile,我在Linux中有一个c++项目,其中源文件位于如下所示的两个目录中。目前,Makefile只编译源/目录中的文件,而不编译“/”目录中的文件。我尝试过许多黑客攻击,但都没有用。在编译source/中的源文件后,您如何指示Makefile编译“/”目录中的源文件,并将其放入obj/目录中? 我试了很多都没用 一个精明的人是受欢迎的 / 生成文件 file1.cpp 文件2.cpp 来源/ file30.cpp file31.cpp obj/ 文件30.o文件31.o CC=g++ CXXFLAG
CC=g++
CXXFLAGS=-std=c++11-墙
LDFLAGS=-pthread
APPNAME=交易应用程序
EXT=.cpp
SRCDIR=源
OBJDIR=obj
SRC=$(通配符$(SRCDIR)/*$(EXT))
OBJ=$(SRC:$(SRCDIR)/%$(EXT)=$(OBJDIR)/%.o)
DEP=$(OBJ:$(OBJDIR)/%.o=%.d)
RM=RM
DELOBJ=$(OBJ)
全部:$(APPNAME)
$(APPNAME):$(OBJ)
@echo“构建可执行文件…”
$(CC)$(cxflags)-o$@$^$(LDFLAGS)
%.d:$(SRCDIR)/%$(外部)
@$(CPP)$(CFLAGS)$<-MM-MT$(@:%.d=$(OBJDIR)/%.o)>$@
$(OBJDIR)/%.o:$(SRCDIR)/%$(EXT)
$(信息$$OBJ是[${OBJ}])
$(CC)$(cxflags)-o$@-c$<
首先,只搜索SRCDIR
目录中的文件:
SRC = $(wildcard $(SRCDIR)/*$(EXT))
$(OBJDIR)/%.o: $(SRCDIR)/%$(EXT)
但不适用于当前目录中的文件。因此,make当然不会尝试在当前目录中编译源文件。如果要在当前目录中生成文件,需要将它们添加到SRC
然后编写一条规则,告诉make如何编译SRCDIR
子目录中的文件,并将它们放入OBJDIR
子目录:
SRC = $(wildcard $(SRCDIR)/*$(EXT))
$(OBJDIR)/%.o: $(SRCDIR)/%$(EXT)
但是您没有规则告诉make如何编译当前目录中的文件并将其放入
OBJDIR
子目录。如果你想让make知道如何做到这一点,你必须在makefile中给它一条规则,这样做。你读过的文档了吗?它是!你有没有读过的文档?它是!你可以下载和研究现有开源C++软件项目的灵感,比如……你也可以使用这个工具来调试你的代码> MaxFixe/Cuff>,但是你需要先阅读文档。巴齐尔,是的。事实上,我下载了GNU Make手册,我已经阅读了前5章。这个文档非常好。嗨,Madascientist,我已经尝试过添加当前目录,比如:SRC=$(通配符$(SRCDIR)/*$(EXT))$(通配符*$(EXT)),但它不起作用…它不起作用不是我们可以帮助的问题描述。无论如何,我报告说您的makefile有两个问题;将源文件添加到SRC
是其中之一,但您必须修复这两个文件才能使其正常工作。