Makefile变量问题,make想创建“* .o”而不是foo.o bar.o等

时间:2014-05-19 07:51:47

标签: c++ makefile

我认为这很简单,但我不能让它发挥作用。当我运行命令

make --dry-run

在这个makefile上:

CC = g++
CFLAGS = -std=c++11
SRCS = *.cpp
OBJS = (SRCS:.cpp=.o)

testprogram: $(OBJS)
  $(CC) $(CFLAGS) -o $@ $(OBJS)

%.o: %.cpp
 $(CC) -c $(CFLAGS)  $< -o $@     

我希望它能够以下列形式处理编译行:

g++ -c -std=c++11 foo.cpp -o foo.o

但是,它显示此命令:

g++ -c std=c++11 foo.cpp -o *.o

因此,它正在尝试创建一个文件“* .o”而不是所需的目标文件目标。这里出了什么问题?

1 个答案:

答案 0 :(得分:3)

好的,感谢@Juanchopanza的评论,我看到了我的错误。

第三行需要成为:

SRCS = $(wildcard *.cpp)

简单的SRCS = * .cpp不正确