Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.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++_Makefile - Fatal编程技术网

C++ 实现通配符后没有输入文件错误 问题

C++ 实现通配符后没有输入文件错误 问题,c++,makefile,C++,Makefile,我有Makefile,我做了一些繁琐的工作来指定我的所有子例程:A.o通过K.o(都在源代码目录中)定义OBJ,如下所示。这是我的Makefile,它按预期工作 有效的方法 ProjectName=SomeName CXX=g++-std=c++11 CXXFLAGS=-c-墙 OBJ=build/main.o build/A.o\ 构建/B.o构建/C.o\ 构建/D.o构建/E.o\ 构建/F.o构建/G.o\ 构建/H.o构建/I.o\ 构建/J.o构建/K.o\ 全部:$(项目名称) $

我有
Makefile
,我做了一些繁琐的工作来指定我的所有子例程:
A.o
通过
K.o
(都在
源代码
目录中)定义
OBJ
,如下所示。这是我的
Makefile
,它按预期工作

有效的方法
ProjectName=SomeName
CXX=g++-std=c++11
CXXFLAGS=-c-墙
OBJ=build/main.o build/A.o\
构建/B.o构建/C.o\
构建/D.o构建/E.o\
构建/F.o构建/G.o\
构建/H.o构建/I.o\
构建/J.o构建/K.o\
全部:$(项目名称)
$(项目名称):$(OBJS)
$(CXX)-o$@$(OBJS)
build/%.o:source/%.cpp
$(CXX)-o$@$(CXXFLAGS)$<

然而,为了避免这些繁琐的工作,我实现了通配符
$(通配符source/*.cpp)
,我认为它应该可以工作,因为我所调用的是
目录中所有扩展名为
.o
的文件

不起作用的方法
ProjectName=SomeName
CXX=g++-std=c++11
CXXFLAGS=-c-墙
SRC:=$(通配符源/*.cpp)
OBJ:=$(patsubst源代码/%.cpp,内部版本/%.o,$(SRC))
全部:$(项目名称)
$(项目名称):$(OBJS)
$(CXX)-o$@$(OBJS)
build/%.o:source/%.cpp
$(CXX)-o$@$(CXXFLAGS)$<
但是,它向我显示了一个错误:

g++:致命错误:没有输入文件
编译已终止。


任何帮助都将不胜感激。

我相信这是一个简单的输入错误:您将数组称为
OBJ
,但您将其称为
OBJS

在这之前
g++
命令行做了什么?它是
g++-o SomeName build/A.o build/B.o
。@DanielH它是g++-std=c++11-o SomeName假设您的源文件和头都在
/source
目录下,然后
源代码:=$(通配符源代码/*.cpp)
然后
对象:=$(源代码:source/%.cpp=%.o)
(您对
CXX
cxflags
的使用也有点混乱,但它会起作用)