Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 构建c++;在Linux中使用来自两个源目录的Make进行项目_C++_Linux_Makefile - Fatal编程技术网

C++ 构建c++;在Linux中使用来自两个源目录的Make进行项目

C++ 构建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

我在Linux中有一个c++项目,其中源文件位于如下所示的两个目录中。目前,Makefile只编译源/目录中的文件,而不编译“/”目录中的文件。我尝试过许多黑客攻击,但都没有用。在编译source/中的源文件后,您如何指示Makefile编译“/”目录中的源文件,并将其放入obj/目录中? 我试了很多都没用

一个精明的人是受欢迎的

/ 生成文件 file1.cpp 文件2.cpp

来源/ file30.cpp file31.cpp

obj/ 文件30.o文件31.o

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
是其中之一,但您必须修复这两个文件才能使其正常工作。