make 写法练习
cc=g++
all:signal
%:%.o
$(cc) -o $< $@
%.cpp:%.o
echo se $< $@ $* $^
g++ -c $< $@
cl:
rm -rf *.o signal
[root@localhost signal]#
下面来一个完整版的
有一个cpp源文件 跟makefile在同一目录 有一个头文件在子目录 subPath
源文件为一个简单的输出 hello
makefile如下
cc=g++
obj=signal.o
VPATH=./subPath
all:signal
%:%.o
echo fi
$(cc) $< -o $@
$(obj):%.o:%.cpp
echo se $< $@ $* $^
$(cc) -c -I./subPath $<
cl:
rm -rf *.o signal
[root@localhost signal]#
主要说明如下:很多时候其实是对的 不仔细目标中:左边是目标 右边依赖 不要搞错了 搞错了有时却可以是因为 系统默认会推出编译命令而不是你给出的命令
这一点在执行make后输出可看,可用用echo输出看一下调到自己的命令没
还可以去掉指定
~
[root@localhost signal]# cat makefile
cc=g++
VPATH=./subPath
all:signal
%:%.o
echo fi
$(cc) $< -o $@
%.o:%.cpp
echo se $< $@ $* $^
$(cc) -c -I./subPath $<
cl:
rm -rf *.o signal
[root@localhost signal]#
表示的是会根据 all中目标找 同名的 cpp编成 o 再链接成 bin ,如果有头文件的话会到 VPATH中去搜,但是要注意指写 -I参数
这个参数可用shell脚本拼相对目录,但是makefile是不能为你做什么。必须手动指定。如果有库的话还要指定 -L 参数 lib的文件路径
[root@localhost bin]# cat makefile
#basePath=/home/ctest/signal
basePath=..
VPATH=$(basePath)/heard:$(basePath)/src:$(basePath)/o
cc=gcc
obj =signal
all:$(obj)
$(obj):%:%.o
echo make the bin
$(cc) $(basePath)/o/$< -o $(basePath)/bin/$@
%.o:%.cpp
echo make the .o file
$(cc) -c -I$(basePath)/heard $< -o $@
mv $@ $(basePath)/o
cl:
rm -rf $(basePath)/o/*.o $(basePath)/bin/signal $(basePath)/*.o $(basePath)/signal $(basePath)/bin/*.o
[root@localhost bin]#
注意目录名不要写错了,还有就是变量中二进制目标那层是不能直接写成%:%.o 的而要写成$(obj):%:%.o
还要特别注意的是前面带了具体的值时$<之类的自动变量取出来的是 $(obj)里面的目标字符串,并不带目录的,而通配符在前面的目标命令中
的自动变量是自动会加上找到的文件的目录路径的。如%.o:%.cpp这个。
总结一下就是
因为上层目标给出的就只有一个字符串,(不然人家也不知道你要生成啥,总有个头)
你给出目标后才会去找生成这个目标的依赖,而找到的值才会有全路径的。
make 写法练习的更多相关文章
- obj.style.z-index的正确写法
obj.style.z-index的正确写法 今天发现obj.style.z-index在js里面报错,后来才知道在js里应该把含"-"的字符写成驼峰式,例如obj.style.z ...
- java设计模式之单例模式(几种写法及比较)
概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...
- .NET跨平台之旅:数据库连接字符串写法引发的问题
最近在一个ASP.NET Core站点中遇到一个奇怪问题.当用dotnet run命令启动站点后,开始的一段时间请求执行速度超慢,有时要超过20秒,有时甚至超过1分钟,日志中会记录这样的错误: Sys ...
- 【兼容写法】HttpServerUtility.Execute 在等待异步操作完成时被阻止。关键词:MVC,分部视图,异步
异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html MVC6之前的版本,对分部视图的异步支持不是很好 问题: 视图里面有分布视图:@{ ...
- 常用原生JS方法总结(兼容性写法)
经常会用到原生JS来写前端...但是原生JS的一些方法在适应各个浏览器的时候写法有的也不怎么一样的... 今天下班有点累... 就来总结一下简单的东西吧…… 备注:一下的方法都是包裹在一个EventU ...
- touchstart,touchmove,touchend事件 写法
jQuery写法: $('#id').on('touchstart',function(e) { var _touch = e.originalEvent.targetTouches[0]; var ...
- 前端导出Excel兼容写法
今天整理出在Web前端导出Excel的写法,写了一个工具类,对各个浏览器进行了兼容. 首先,导出的数据来源可能有两种: 1. 页面的HTML内容(一般是table) 2. 纯数据 PS:不同的数据源, ...
- Express 4 handlebars 不使用layout写法
Express 4 handlebars 不使用layout写法 Express node nodejs handlebars layout 最近刚开始学习使用nodejs. 使用express搭建了 ...
- javascript函数的几种写法集合
1.常规写法 function fnName(){ console.log("常规写法"); } 2.匿名函数,函数保存到变量里 var myfn = function(){ co ...
- 关于java的递归写法,经典的Fibonacci数的问题
经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...
随机推荐
- CNN中dropout层的理解
dropout是在训练神经网络模型时,样本数据过少,防止过拟合而采用的trick.那它是怎么做到防止过拟合的呢? 首先,想象我们现在只训练一个特定的网络,当迭代次数增多的时候,可能出现网络对训练集拟合 ...
- hdu 5687 Problem C trie树
Problem C Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Prob ...
- Vi/Vim三种模式
命令模式,底线命令模式,输入模式:
- SSM(Spring+SpringMVC+Mybatis)+Mysql 框架整合搭建流程以及其间注意事项
复习SSM框架,太久没用自己手动撘一个,发现自己还是有很多地方忘记了和没注意的事项... 首先,直接给出总流程: 零.引jar包 1.引包(或者写maven.pom) 一.数据库部分 设计数据库各表结 ...
- Linux命令详解-printf
printf命令格式化并输出结果到标准输出. 1.命令格式: printf (选项) (参数) 2.命令功能: echo会将输入的字符串送往标准输出.输出的字符串间以空白字符隔开,并在最后加上换行号. ...
- 去掉Firefox的标题栏
Linux Mint里,火狐的标题栏很不美观,不过火狐可是出名的的“可定制”,Hide Caption扩展拖拖地满足你的要求,简直不能再好! 献上链接: https://addons.mozilla. ...
- <p>1、查询端口号占用,根据端口查看进程信息</p>
2017年6月份的时候,我就着手在公司推广git,首先我自己尝试搭建了GitLab来管理代码,并且通过以下博客记录了GitLab的搭建,以及GitLab备份,GitLab升级等事情. git学习——& ...
- UVA-11280 Flying to Fredericton (dijkstra)
题目大意:一张有向图,n个节点,m条边,有边权.求从起点到终点在最多经过s个中间节点(不包括始末点)时的最小权和. 题目分析:因为起点和终点是固定的,只需一次dijkstra打出表dis[u][k], ...
- HDU-5492 Find a path (枚举+DP)
Problem Description Frog fell into a maze. This maze is a rectangle containing N rows and M columns. ...
- React中父子组件间的通信问题
1.https://blog.csdn.net/sinat_17775997/article/details/59103173 (React中父子组件间的通信问题)