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
的使用也有点混乱,但它会起作用)