我认为这很简单,但我不能让它发挥作用。当我运行命令
时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”而不是所需的目标文件目标。这里出了什么问题?
答案 0 :(得分:3)
好的,感谢@Juanchopanza的评论,我看到了我的错误。
第三行需要成为:
SRCS = $(wildcard *.cpp)
简单的SRCS = * .cpp不正确