Linux学习笔记-对Makefile的初步优化
原文件如下:
这里的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的初步优化相关推荐
- linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库
Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...
- 34.Oracle深度学习笔记——12C的AWR初步解读
34.Oracle深度学习笔记--12C的AWR初步解读 关于AWR,蛤蟆也经常看.因为经常看别人给出的建议,很难有深刻体会.对此,计划花费几个晚上时间好好体会一把并记录下来.此处以单实例为例.列出目 ...
- 20155303狄惟佳预备作业三Linux学习笔记
20155303狄惟佳预备作业三Linux学习笔记 初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对&qu ...
- Linux学习笔记---使用BusyBox创建根文件系统(二)
目录 向 rootfs 的"/lib "目录添加库文件 向 rootfs 的usr/lib 目录添加库文件 创建其他文件夹 根文件系统初步测试 向 rootfs 的"/l ...
- Linux学习笔记---使用BusyBox创建根文件系统(一)
目录 下载BusyBox 修改makefile 添加中文支持 编译busybox 下载BusyBox BusyBox 可以在其官网下载到,官网地址为:https://busybox.net 打开官网后 ...
- Linux学习笔记---移植官方linux步骤(一)
使用的开发板是正点原子IMX6U-MINI EMMC512M的开发板,这个板子也是移植的NXP官方linux,所以这里就直接从NXP官方的linux移植. 这里所说的移植,其实不是自己编写驱动文件等 ...
- Linux学习笔记---移植官方uboot步骤(一)
目录 编写shell脚本 修改MakeFile文件 重命名shell脚本 添加默认配置文件 修改默认配置文件 准备需要的板级文件夹 重命名.C文件 修改Makefile 修改imximage.cfg配 ...
- 嵌入式linux学习笔记--TCP通讯整理
嵌入式linux学习笔记–TCP通讯整理 之前的项目中使用到了比较多的tcp 通讯相关的知识,一直也没有进行整理,今天准备拿出时间好好的整理一下TCP通讯的整个过程.预计会整理linux和window ...
- Linux学习笔记(一) -- 在虚拟机中安装Ubuntu 18.04
1.安装平台 1.操作系统:Win7 X64 2.虚拟机版本:VMware Workstation 14 Pro 3.ubuntu版本:Ubuntu 18.04 2.安装步骤 ubuntu下载 1.下 ...
最新文章
- Python的Xpath介绍和语法详解
- 关于因为该列没有包含在聚合函数或 GROUP BY 子句中
- java b kb mb gb 转换_java 上传文件大小转换为 GB/MB/KB/B
- 【PAT乙级】1084 外观数列 (20 分)
- android service alertdialog,Android service里面启动alertdialog
- .NET Core2使用Azure云上的Iot-Hub服务
- java 接口和虚构_深入理解Java的接口和抽象类
- 数据科学 IPython 笔记本 7.8 分层索引
- 砂.随笔.十七.谋定而后动
- ProLiant 380G5服务器上安装netware4.11
- hdu 4899 Hero meet devil
- 条件运算符的嵌套使用
- IPsec-Tools配置之racoon
- SAP扫盲系列之一:什么是SAP系统和应用服务器
- 牛客竞赛:第三届超越杯程序设计团体赛题解
- Android获取开机时间的方式(进launcher)
- 企业管理必须具备的8大要素!
- 产业护航 湾区共振!11月30日飞桨携手生态伙伴带来企业智能化升级的新思路...
- SpringBoot线程池ThreadPoolTaskExecutor和@Async异步方法浅解及代码应用示例
- 常识介绍---投稿---评审部分已审回、 评审已审回、 终审,盲审和外审