我在学习写makefile
CC=g++
objects= 8.1.o stack.o Stack.h
8.1:$(objects)
cc -o 8.1 $(objects)
8.1.o:Stack.h
stack.o:Stack.h
clean :
rm 8.1 $(objects)
这是文件目录 用 make编译是 说 Stack.h 的string 不是类型名
但用g++ -o 8.1 8.1.cpp stack.cpp Stack.h 就不会 有这个错误 不知道是为什么 应该怎么写才对
Stack.h 代码在最下面
#include <string>
namespace Stack{
using std::string;
void push(const string &str);
string pop();
void reverse();
void sort();
}
SRCS = $(wildcard *.cpp)
OBJS = $(patsubst %.cpp,%.o,$(SRCS))
TARGET = 8.1
CFLAGS = -g -c -I./
LDFLAGS =
CC = g++
.PHONY : all
all : $(TARGET)
$(TARGET) : $(OBJS)
$(CC) $(LDFLAGS) $^ -o $@
$(OBJS) : $(SRCS)
$(CC) $(CFLAGS) $(patsubst %.o,%.cpp $@) -o $@
.PHONY : clean
rm -rf $(OBJS) $(TARGET)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。