原文件如下:

这里的Makefile源码如下:


helloworld: main.o first.o second.og++ main.o first.o second.o -o helloworldmain.o: first.h second.h main.cppg++ -c main.cpp -o main.ofirst.o: first.h first.cppg++ -c first.cpp -o first.osecond.o: second.cpp second.hg++ -c second.cpp -o second.oclean:rm -rf *.o

用g++去跑下看看!

本博文的任务是对这个Makefile进行简单的优化!

对程序名称进行优化!

Makefile代码如下:

EXE=NiMei$(EXE): main.o first.o second.og++ main.o first.o second.o -o $(EXE)main.o: first.h second.h main.cppg++ -c main.cpp -o main.ofirst.o: first.h first.cppg++ -c first.cpp -o first.osecond.o: second.cpp second.hg++ -c second.cpp -o second.oclean:rm -rf *.o $(EXE)

用g++跑下,程序运行截图如下:

使用下clean这个Makefile命令!

Linux命令与现象都如下图:

如果有多个.cpp,要生成.o文件,Makefile也提供了优化,Makefile源码如下:

EXE=NiMei$(EXE): main.o first.o second.og++ main.o first.o second.o -o $(EXE)main.o: first.h second.h main.cppg++ -c main.cpp -o main.o%o: %.cppg++ -c $< -o $@clean:rm -rf *.o $(EXE)

这里只给出了.cpp的依赖项,并没有给出.h的。(后期博文会给出)

程序运行截图如下:

下面给出两个函数功能:

1.使用通配符找当前文件所有.cpp文件,源码如下:

EXE=NiMeiFIND_CPP=$(wildcard *.cpp)$(EXE): main.o first.o second.og++ main.o first.o second.o -o $(EXE)main.o: first.h second.h main.cppg++ -c main.cpp -o main.o%o: %.cppg++ -c $< -o $@clean:rm -rf *.o $(EXE)test1:@echo $(FIND_CPP)

运行截图如下:

2.把当前文件夹里面的.cpp文件找出来,构造.o文件名(其实就是把xxx.cpp中的xxx提取出来,再后面接一个.o)

Makefile源码如下:

EXE=NiMeiFIND_CPP=$(wildcard *.cpp)
FIND_CPPTOO=$(patsubst %.cpp, %.o, $(FIND_CPP))$(EXE): main.o first.o second.og++ main.o first.o second.o -o $(EXE)main.o: first.h second.h main.cppg++ -c main.cpp -o main.o%o: %.cppg++ -c $< -o $@clean:rm -rf *.o $(EXE)test1:@echo $(FIND_CPP)test2:@echo $(FIND_CPPTOO)

程序运行截图如下:

再次把Makefile进行优化,源码如下:

EXE=NiMeiFIND_CPP=$(wildcard *.cpp)
FIND_CPPTOO=$(patsubst %.cpp, %.o, $(FIND_CPP))$(EXE): $(FIND_CPPTOO)g++ $(FIND_CPPTOO) -o $(EXE)main.o: first.h second.h main.cppg++ -c main.cpp -o main.o%o: %.cppg++ -c $< -o $@clean:rm -rf *.o $(EXE)test1:@echo $(FIND_CPP)test2:@echo $(FIND_CPPTOO)

程序运行截图如下:

Linux学习笔记-对Makefile的初步优化相关推荐

  1. linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库

    Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...

  2. 34.Oracle深度学习笔记——12C的AWR初步解读

    34.Oracle深度学习笔记--12C的AWR初步解读 关于AWR,蛤蟆也经常看.因为经常看别人给出的建议,很难有深刻体会.对此,计划花费几个晚上时间好好体会一把并记录下来.此处以单实例为例.列出目 ...

  3. 20155303狄惟佳预备作业三Linux学习笔记

    20155303狄惟佳预备作业三Linux学习笔记 初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对&qu ...

  4. Linux学习笔记---使用BusyBox创建根文件系统(二)

    目录 向 rootfs 的"/lib "目录添加库文件 向 rootfs 的usr/lib 目录添加库文件 创建其他文件夹 根文件系统初步测试 向 rootfs 的"/l ...

  5. Linux学习笔记---使用BusyBox创建根文件系统(一)

    目录 下载BusyBox 修改makefile 添加中文支持 编译busybox 下载BusyBox BusyBox 可以在其官网下载到,官网地址为:https://busybox.net 打开官网后 ...

  6. Linux学习笔记---移植官方linux步骤(一)

    使用的开发板是正点原子IMX6U-MINI  EMMC512M的开发板,这个板子也是移植的NXP官方linux,所以这里就直接从NXP官方的linux移植. 这里所说的移植,其实不是自己编写驱动文件等 ...

  7. Linux学习笔记---移植官方uboot步骤(一)

    目录 编写shell脚本 修改MakeFile文件 重命名shell脚本 添加默认配置文件 修改默认配置文件 准备需要的板级文件夹 重命名.C文件 修改Makefile 修改imximage.cfg配 ...

  8. 嵌入式linux学习笔记--TCP通讯整理

    嵌入式linux学习笔记–TCP通讯整理 之前的项目中使用到了比较多的tcp 通讯相关的知识,一直也没有进行整理,今天准备拿出时间好好的整理一下TCP通讯的整个过程.预计会整理linux和window ...

  9. Linux学习笔记(一) -- 在虚拟机中安装Ubuntu 18.04

    1.安装平台 1.操作系统:Win7 X64 2.虚拟机版本:VMware Workstation 14 Pro 3.ubuntu版本:Ubuntu 18.04 2.安装步骤 ubuntu下载 1.下 ...

最新文章

  1. Python的Xpath介绍和语法详解
  2. 关于因为该列没有包含在聚合函数或 GROUP BY 子句中
  3. java b kb mb gb 转换_java 上传文件大小转换为 GB/MB/KB/B
  4. 【PAT乙级】1084 外观数列 (20 分)
  5. android service alertdialog,Android service里面启动alertdialog
  6. .NET Core2使用Azure云上的Iot-Hub服务
  7. java 接口和虚构_深入理解Java的接口和抽象类
  8. 数据科学 IPython 笔记本 7.8 分层索引
  9. 砂.随笔.十七.谋定而后动
  10. ProLiant 380G5服务器上安装netware4.11
  11. hdu 4899 Hero meet devil
  12. 条件运算符的嵌套使用
  13. IPsec-Tools配置之racoon
  14. SAP扫盲系列之一:什么是SAP系统和应用服务器
  15. 牛客竞赛:第三届超越杯程序设计团体赛题解
  16. Android获取开机时间的方式(进launcher)
  17. 企业管理必须具备的8大要素!
  18. 产业护航 湾区共振!11月30日飞桨携手生态伙伴带来企业智能化升级的新思路...
  19. SpringBoot线程池ThreadPoolTaskExecutor和@Async异步方法浅解及代码应用示例
  20. 常识介绍---投稿---评审部分已审回、 评审已审回、 终审,盲审和外审

热门文章

  1. ubuntu 下操作目录,出现Permission denied的解决办法
  2. 再好的代码没有电也跑不了
  3. 结合PE格式对linker分析1
  4. 2年的程序员之路 ,分享给你们
  5. 情人节找个程序员当男朋友,一般都不会太差
  6. 计算机应用基础1,计算机应用基础1
  7. 这份精子保存了1亿年,不仅长度惊人还刷新了一项记录
  8. 眼液蛋白水平或许可预测阿尔茨海默症
  9. 使用ssh公钥实现ssh免密码登录
  10. 一款简单实用的桌面电子邮件客户端