现有类定义Sales_item.hpp Sales_item.cpp

主函数my7_31.cpp(代码来源于c++primer 习题解答7_31)

希望使用makefile在Ubuntu中进行编译链接,生成可执行文件edit。

注:目的是了解makefile如何使用,这个makefile文件并不通用,只能体现makefile的基本功能

代码如下

Sales_item.hpp

#pragma once
#include <iostream>
#include <string> class Sales_item
{
public:
Sales_item() :units_sold(0), revenue(0.0){}
private:
std::string isbn;
unsigned int units_sold;
double revenue;
public: bool same_isbn(const Sales_item & rhs)const; std::istream & input(std::istream & in);
std::ostream & output(std::ostream & out)const;
double avg_price() const;
};

Sales_item.cpp

#include "Sales_item.hpp"

bool Sales_item::same_isbn(const Sales_item & rhs) const
{
return this->isbn==rhs.isbn;
} std::istream & Sales_item::input(std::istream & in)
{
double price;
in >> isbn >> units_sold >> price;
if (in)
{
revenue = units_sold*price;
}
else
{
units_sold = 0; revenue = 0.0;
}
return in;
//TODO: insert return statement here
} std::ostream & Sales_item::output(std::ostream & out) const
{
out << isbn << "\t" << units_sold << "\t" << revenue<<"\t"<<avg_price();
return out;
//TODO: insert return statement here
} double Sales_item::avg_price()const
{
if (units_sold)
return revenue / units_sold;
else
{
return 0;
} }

my7_31.cpp

//main for read class Sales_item
#include <iostream>
#include "Sales_item.hpp" using namespace std; int main ()
{
Sales_item item;
cout << "enter some trasactions(Ctrl+z to end) :" << endl;
while (item.input(cin))
{
cout << "the trnsaction teade is :" << endl;
item.output(cout);
cout << endl;
}
return 0;
}

makefile

参考:http://www.chinaunix.net/old_jh/23/408225.html

edit:my7_31.o Sales_item.o
g++ -o edit my7_31.o Sales_item.o
Sales_item.o:Sales_item.cpp Sales_item.hpp
g++ -c Sales_item.cpp
my7_31.o:my7_31.cpp Sales_item.hpp
g++ -c my7_31.cpp
clean:

上面是原始版本

简洁版,依赖于make强大的自动推导功能,只需要给出相应的.h依赖项即可

edit:my7_31.o Sales_item.o
g++ -o edit my7_31.o Sales_item.o
Sales_item.o: Sales_item.hpp my7_31.o:Sales_item.hpp clean:

ubuntu 中使用makefile组织c++多文件的简陋方法的更多相关文章

  1. Ubuntu 中软件的安装、卸载以及查看的方法总结

    Ubuntu 中软件的安装.卸载以及查看的方法总结 博客分类: Linux UbuntuDebian配置管理CacheF#  说明:由于图形化界面方法(如Add/Remove... 和Synaptic ...

  2. 在Win7中IIS配置Asp.Net虚拟文件夹的方法及错误总结!

    在Win7中IIS配置Asp.Net虚拟文件夹的方法总结! 一.右键[站点].点击[加入虚拟文件夹]或[虚拟应用程序],笔者建议最好建立虚拟应用程序,由于这就跟一个站点差点儿相同.不用考虑路径问题. ...

  3. 【linux】Ubuntu中shell脚本无法使用source的原因及解决方法

    问题现象: shell脚本中source aaa.sh时提示 source: not found 原因: ls -l `which sh` 提示/bin/sh -> dash 这说明是用dash ...

  4. Makefile 描述的是文件编译的相关规则,它的规则主要是两个部分组成,分别是依赖的关系和执行的命令 PHONY伪目标实践

    Makefile的工作流程 http://c.biancheng.net/view/7091.html Makefile文件是什么? 我们教程主要是讲的是 Makefile .很多 Linux(Uni ...

  5. 在Ubuntu系统中解压rar和zip文件的方法

    大家在以前的windows系统中会存有很多rar和zip格式的压缩文件,Ubuntu系统默认情况下对这些文件的支持不是很好,如果直接用"归档管理器"打开会提示错误,因此今天跟大家分 ...

  6. Ubuntu中改变文件的默认打开方式

    其实最简单的方法是右键,在属性中修改,不过这样做没啥意义. ubuntu中与文件的打开方式相关的配置文件有四个: /etc/gnome/defaults.list 这是全局配置文件 /usr/shar ...

  7. Ubuntu中的.bashrc文件

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运 ...

  8. 使用secureCRT和Telnet将文件压缩导出到Ubuntu中,到Ubuntu中加压缩发现:tar解压包的时候出现错误gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now

    细节描述: 问题如题所示:查找博客园和CSDN上查找问题,得到问题解决方法大致如下: 1 修改解压缩命令: 由 tar zxvf software_package.tar.gz变为tar xvf so ...

  9. ubuntu中文件夹的作用

    /bin系統有很多放置執行檔的目錄,但/bin比較特殊.因為/bin放置的是在單人維護模式下還能夠被操作的指令. 在/bin底下的指令可以被root與一般帳號所使用,主要有:cat, chmod, c ...

随机推荐

  1. node.js UDP NAT 穿透实现

    源码:https://github.com/zhongchengyi/node-udp-trunnel-demo 1.原理 A登录Server, NAT A 分配端口11000,Server得到A的地 ...

  2. ABP取其精华

    目录 ABP中使用Swagger UI集成接口文档 ABP-AsyncLocal的使用 ABP-多个DbContext实现事物更新 持续更新中.

  3. JAVA8之 Stream 流(四)

    如果说前面几章是函数式编程的方法论,那么 Stream 流就应该是 JAVA8 为我们提供的最佳实践. Stream 流的定义 Stream 是支持串行和并行操作的一系列元素.流操作会被组合到流管道中 ...

  4. windows下mysql免安装版配置(踩过的坑)简记

    下载 从官网(https://dev.mysql.com/downloads/mysql/)下载 这里的免安装版本的,相对来说干净,但是需要自己来配置很多东西. 配置 首先是注册windows的服务. ...

  5. Git是什么?

    Git是什么? Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控 ...

  6. 星星泡饭-R1SE

    作词 : 吴孤儿 时光不用斟酌 再流淌 摩天轮慢慢地旋转 约定 留下搅拌的星光 赵磊: 媲美哪颗星星的孤寂 是我们 脏不了的心 勇敢 游戏 品尝着很饿的梦境 我的梦想只是梦想 哪怕回音只是气球碰撞 会 ...

  7. Docker日常常用命令汇总

    一.使用docker镜像/容器 (1)创建容器,且进入命令台 docker run --name 容器名 -i -t ubuntu /bin/bash (2)查看/容器 docker ps #查看正在 ...

  8. vue传值(父子传值,非父子传值)

    vue组件传值,分为父子传值和非父子传值,父子传值又分为父传子和子传父. 组件之间的传值,实现了数据的联动,是从操作Dom到操作数据一个跳转性的突破,在学习vue双向绑定原理之后, 这种观念就应该继续 ...

  9. Java类成员之代码块

    代码块含义:使用{ }括起来的代码 代码块类型: 1.局部代码块:定义在方法体中. 2.构造代码块:也叫初始化代码块,定义在类中方法体之外. 3.静态代码块:定义在类中方法体之外,被static修饰符 ...

  10. mongodb学习(一)——简介和基本操作

    简介 MongoDB 是一个基于分布式文件存储的数据库 属于NoSQL数据库,是介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的 旨在为WEB应用提供可扩展的高性 ...