开发者社区> 问答> 正文

Linux makefile

我在学习写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 代码在最下面
screenshot

#include <string>

namespace Stack{
    using std::string;
    void push(const string &str);
    string pop();
    void reverse();
    void sort();
}

展开
收起
a123456678 2016-06-14 11:38:05 1960 0
1 条回答
写回答
取消 提交回答
  • 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)
    2019-07-17 19:37:07
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载