实现通配符后没有输入文件错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现通配符后没有输入文件错误相关的知识,希望对你有一定的参考价值。

Problem

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

Method that works

ProjectName = SomeName
CXX = g++ -std=c++11
CXXFLAGS = -c -Wall

OBJ = build/main.o build/A.o 
build/B.o build/C.o 
build/D.o build/E.o 
build/F.o build/G.o 
build/H.o build/I.o 
build/J.o build/K.o 

all: $(ProjectName)

$(ProjectName): $(OBJS)
    $(CXX) -o $@ $(OBJS)

build/%.o: source/%.cpp
    $(CXX) -o $@ $(CXXFLAGS) $<

但是,为了逃避这些繁琐的工作,我已经实现了通配符$(wildcard source/*.cpp),我认为它应该可以工作,因为我称之为.o目录中所有source扩展名的文件

Methods that does not work

ProjectName = SomeName
CXX = g++ -std=c++11
CXXFLAGS = -c -Wall

SRC := $(wildcard source/*.cpp)
OBJ := $(patsubst source/%.cpp, build/%.o, $(SRC))

all: $(ProjectName)

$(ProjectName): $(OBJS)
    $(CXX) -o $@ $(OBJS)

build/%.o: source/%.cpp
    $(CXX) -o $@ $(CXXFLAGS) $<

但是,它显示了一个错误:

g++: fatal error: no input files compilation terminated.

任何帮助将不胜感激。

答案

我相信这是一个简单的错字:你称你的数组OBJ,但你引用它作为OBJS

以上是关于实现通配符后没有输入文件错误的主要内容,如果未能解决你的问题,请参考以下文章

Linux通配符

8.1shell介绍 8.2命令历史 8.3命令补全和别名 8.4通配符 8.5输入输出重定向

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”

ASP.net MVC 代码片段问题中的 Jqgrid 实现

Makefile文件语法

华为OJ平台——字符串通配符