Makefile 指定源文件目录 make
top=$(CURDIR)
SRC_DIR=$(top)/src
BUILD_DIR=$(SRC_DIR)
src=$(wildcard $(SRC_DIR)/*.c)
obj=$(patsubst $(SRC_DIR)/%.c, %.o, $(src))
target=a.out all:
cd ./src && $(MAKE) \
-f $(top)/Makefile a.out CURDIR=$(top) a.out:$(obj)
gcc $^ -o $@ .c.o:
gcc -c $< clean:
rm -f $(BUILD_DIR)/*.o $(BUILD_DIR)/$(target)
1.工作目录
(0)Makefile的工作目录
Makefile的工作目录默认继承为其父进程的工作目录,即shell的当前目录,
Makefile的工作目录使用CURDIR变量,
可以在make时设置CURDIR以改变Makefile的工作目录
(1)变量定义的工作目录
Makefile执行时,变量首先被定义,变量定义的工作目录是 CURDIR
(2)命令执行的工作目录
命令执行的工作目录是CURDIR,命令中可以修改本条命令的工作目录,无法改变其他命令工作目录。使用 && 除外
cd ./src && $(MAKE) \
-f $(top)/Makefile a.out CURDIR=$(top)
这里 make -f $(top)/Makefile .......的工作目录被 cd ./src改变,这里修改 CURDIR的原因是,新的Makefile进程执行时,为了正确生成 obj字符串,需要将工作目录修改。
这里 -f的意思是显示指定 Makefile文件
注意:
cd ./src
pwd
这样pwd是不会被 cd ./src影响的。
cd ./src && pwd
这样pwd会被cd ./src影响
2. .c.o
.c.o:
表示 所有的 .o 文件依赖.c 文件
Makefile 指定源文件目录 make的更多相关文章
- 单源文件目录makefile
目录结构 由于只是用来编译简单的小型程序,所以目录尽量简洁: . ├── build │ ├── bin │ ├── .dep │ └── obj ├── makefile └── src ...
- tar的打包-压缩与解压缩,并解压到指定的目录
tar在linux上是常用的打包.压缩.加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数 参数: -c :create 建立压缩档案的参数:-x : 解压缩压缩档案的参数:-z : 是否需 ...
- uboot的静默编译、指定编译目录、多核编译
最近在移植uboot,发现每次看源代码,都有编译留下的.o 等各种文件,在百度中,找到了解决方法. 在顶层的Makefile文件中,大概80多行,有这么几句注释, # kbuild supports ...
- Linux tar (打包.压缩.解压缩)命令说明 | tar如何解压文件到指定的目录?
打包举例:将 /usr/local/src/zlib-1.2.5目录下的文件打包成 zlib-1.2.5.tar.gz cd /usr/local/src tar -czvf ./zlib-1.2.5 ...
- 《OD学hadoop》在LINUX下如何将tar压缩文件解压到指定的目录下
linux下tar命令解压到指定的目录 :#tar zxvf /bbs.tar.zip -C /zzz/bbs //把根目录下的bbs.tar.zip解压到/zzz/bbs下,前提要保证存在/zzz/ ...
- bat转向指定的目录路径处
使用bat命令转到指定的盘符路径: cd /d xxxx目录路径. 例如:cd /d D:\abc\efg 则是转到D盘的abc目录下的efg目录处.其中 /d 是指:无论当前bat是在哪个盘符中,都 ...
- usb转串口驱动时会出现“文件的哈希值不在指定的目录”这样的提示
一般在安装一些usb转串口驱动时会出现“文件的哈希值不在指定的目录”这样的提示,那么怎么解决呢?知道的别喷我哦,我只是再普及一下,嘿嘿1.鼠标移到右下角,点击“设置”,再点击“更改电脑设置”2.点击最 ...
- Git源码安装 Linux指定安装目录
1.安装依赖包 $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 2.下载最新版源码包https: ...
- 转载:C# 将引用的DLL文件放到指定的目录下
当软件引用的DLL比较多的时候,全部的DLL都放在exe同目录下,显得比较乱,如果能把dll放到响应的文件夹下面,就方便很多 下面是解决该问题的一种方法: 右键点击项目:属性->设置,项目会生成 ...
随机推荐
- day51 Pyhton 前端02
内容回顾: 1.h1~h6:加粗,数字越大级别越小,自动换行 2.br:换行;hr:分割线; (特殊符号,空格) 3.p:与前边和后边内容之间有间距 4.a标签的href:本地文件连接;网络连接;锚链 ...
- .NetCore 异步编程 - async/await
前言: 这段时间开始用.netcore做公司项目,发现前辈搭的框架通篇运用了异步编程方式,也就是async/await方式,作为一个刚接触的小白,自然不太明白其中原理,最重要的是,这个玩意如果不明白基 ...
- centos8下启用rc-local服务
一,centos8不建议写rc.local,默认启动时执行的命令放到何处? 以前我们会把linux开机执行的命令写入到/etc/rc.local 在centos8上系统不再建议我们写入到rc.loca ...
- vue知识点16
1. 数组用下标改变,或者对象增加属性,这样的改变数据 是不能触发视图更新的,要用 Vue.set(对象,属性,值) 或this.$set(对象,属性,值) 2. this.$forceUpdat ...
- MVC查询
前言 最近没什么好写的,所以写个查询来巩固一下知识 HTML @{ Layout = null; } <!DOCTYPE html> <html> <head> & ...
- ng中的ng-content ng-template ng-container
在angular中,有这样三个自带的标签,但是在angular的文档中没有说明,只有在api中有简单的描述,摸索了半天才搞懂是咋回事. ng-content <div> <ng-co ...
- 4. Validator校验器的五大核心组件,一个都不能少
困难是弹簧,你弱它就强.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的 ...
- 技术选型:为什么批处理我们却选择了Flink
最近接手了一个改造多平台日志服务的需求,经过梳理,我认为之前服务在设计上存在缺陷.经过一段时间的技术方案调研,最终我们决定选择使用 Flink 重构该服务. 目前重构后的服务已成功经受了国庆节流量洪峰 ...
- 【总结】IP
一. IP基本认识 1.IP 在 TCP/IP 参考模型中处于第三层,也就是网络层. 网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信 2.网络层与数据链路层有什么 ...
- xlrd、xlwt常用命令
# -*- coding: utf-8 -*- import xlrd import xlwt from datetime import date,datetime def read_excel( ...