Makefile 一点一滴(二)—— 输出文件到指定路径
先来看最简单的 makefile 文件:
TestCpp : TestCpp.o
g++ -o TestCpp TestCpp.o TestCpp.o : TestCpp.cpp
g++ -c TestCpp.cpp clean :
rm -rf TestCpp.o
冒号前是要生成的文件,冒号后是该文件所依赖的文件
下一行是生成所需的文件,注意,一定要以Tab开头。
这里,我想将可执行文件置入 ./bin 路径下,二进制 .o 文件置入 ./debug 路径下,源文件 .cpp 置入 ./src 路径下
于是我将其修改为:
TestCpp : ./debug/TestCpp.o
g++ -o TestCpp ./debug/TestCpp.o ./debug/TestCpp.o : ./src/TestCpp.cpp
g++ -c ./src/TestCpp.cpp clean :
rm -rf ./debug/TestCpp.o
,创建好 bin、src、debug 文件夹,重新执行 make,输出:
[@localhost TestCpp]$ ls
bin debug makefile src
[@localhost TestCpp]$ make
g++ -c ./src/TestCpp.cpp
g++ -o TestCpp ./debug/TestCpp.o
g++: ./debug/TestCpp.o
g++: make: *** [TestCpp]
make失败,于是我仅make .o:
[@localhost TestCpp]$ make ./debug/TestCpp.o
g++ -c ./src/TestCpp.cpp
[@localhost TestCpp]$ ls
bin debug makefile src TestCpp.o
[@localhost TestCpp]$
生成 TestCpp.o 成功了,但是却不是在我指定的目录 debug/ 下。
证明 :
./debug/TestCpp.o : ./src/TestCpp.cpp
g++ -c ./src/TestCpp.cpp
这句写的是对的。
在这个地方上困扰了很久,最后才发现,我没有为 .o 指定输出路径,
“ g++ -c ./src/TestCpp.cpp ” 找不到输出.o的路径,正确的写法是:
“ g++ -c -o ./debug/TestCpp.o ./src/TestCpp.cpp ”
修改makefile
【makefile —— 第二个版本】
TestCpp : ./debug/TestCpp.o
g++ -o TestCpp ./debug/TestCpp.o ./debug/TestCpp.o : ./src/TestCpp.cpp
# g++ -c ./src/TestCpp.cpp
g++ -c -o ./debug/TestCpp.o ./src/TestCpp.cpp clean :
rm -rf ./debug/TestCpp.o
并重新执行 make,输出:
[@localhost TestCpp]$ make
g++ -c -o ./debug/TestCpp.o ./src/TestCpp.cpp
g++ -o TestCpp ./debug/TestCpp.o
[@localhost TestCpp]$ ls
bin debug makefile src TestCpp
[@localhost TestCpp]$ ls debug/
TestCpp.o
我们发现,这次输出是对的。执行 ./TestCpp,输出:
[@localhost TestCpp]$ ./TestCpp
Hello C++ Language !
也没有问题。
Makefile 一点一滴(二)—— 输出文件到指定路径的更多相关文章
- flask上传文件到指定路径
flask上传文件到指定路径 项目结构如下: 首先是:视图函数uload_file.py,代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- fro ...
- 利用TCP 客户端---->服务端 传送文件到指定路径,并返回一个友好的回馈
首先盲写的一个传输文件的方法,但测试发现了一个非常不容易发现的问题,这里先说明一下. 错误的代码如下: package com.TCP.java; import java.io.File; impor ...
- SQL语句还原数据库并移动文件到指定路径
用SQL语句还原数据库时如果不指定数据库文件的存储路径,则默认把数据文件和日志文件存放到与原数据库相同的文件路径中,这样可能会产生错误,比如执行下面的语句: restore database Smar ...
- 利用Socket 客户端---->服务端 传送文件到指定路径,并返回一个友好的回馈
首先盲写的一个传输文件的方法,但测试发现了一个非常不容易发现的问题,这里先说明一下. 错误的代码如下: package com.TCP.java; import java.io.File; impor ...
- [Linux] 输出文件的指定行
1.获取第k行(以k=10为例) 要注意的是,如果文件包含内容不足10行,应该不输出. # Read from the file file.txt and output the tenth line ...
- ASP.NET解压zip文件,并将解压后的文件放到指定路径中
本文链接:https://www.cnblogs.com/yifeixue/p/11769905.html 本人已亲测有效(*^▽^*) 废话不多说了,直接上代码: 1 /// <summary ...
- ls命令输出文件的绝对路径
find $PWD | xargs ls -ld 再结合 grep 筛选
- Oracle RMAN 恢复控制文件到指定的路径
Oracle 数据库通过RMAN恢复控制文件到指定的路径 --------------------------------------------------------- 先查询备份集信息,再指定备 ...
- windows上python上传下载文件到linux服务器指定路径【转】
从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...
随机推荐
- 如何为CriteriaOperator过滤对象转换为lambda表达式,即:linq to xpo的动态where语句
How to convert the CriteriaOperator to a lambda expression, so, the latter expression can be used in ...
- U盘修复
方法一: 1.点开始-运行-输入cmd-format f: /fs: FAT32 (这里f:是指U盘所在盘符) 2.打开控制面板-管理工具-计算机管理-磁盘管理-找到U盘的所在的盘符--点右键--删除 ...
- Java抛出OutOfMemoryError:Java heap space堆内存溢出错误的分析方案
抛出堆内存溢出的错误一定要记得保留现场环境(导出堆内存信息到文件),否则如果无法进行分析,并从根本上解决问题,下次很有可能还会出现. 第一步:导出堆转储文件 我们可以使用Jdk自带的jmap工具.使用 ...
- stopPropagation, preventDefault 和 return false 的区别
因为有父, 子节点同在, 因为有监听事件和浏览器默认动作之分. 使用 JavaScript 时为了达到预期效果经常需要阻止事件和动作执行. 一般我们会用到三种方法, 分别是 stopPropagati ...
- 《CSS权威指南》读书笔记
一.css和文档层叠 css规定了冲突规则,这些规则统称为层叠.这些规则定义了样式发生冲突时以优先级高的为准. 常用的优先级判定: 1. 开发者样式>读者样式>浏览器样式(除非使用!imp ...
- Android之mtklog分析
Android之mtklog分析 [海外场测反馈][xxx]动态测试时对比机xxxx拨打测试机xxxxx自动挂断电话 工作中遇到一个掉话的问题,需要分析log,log比较大,我也没法上传,就简答的讲讲 ...
- ComboboxColumn取值——Winform中DataGridView中某一列使用下拉框
ComboboxColumn的用法网上很多,绑定数据源都很简单,这里我遇到的是.不绑定数据源,即所有comobox的绑定都是固定的几个数据: 可以看到没有绑定任何数据源, ,在后台cs中取到下拉框的值 ...
- VB关闭其他进程的输入法
http://files.cnblogs.com/files/liuzhaoyzz/%E5%85%B3%E9%97%AD%E5%85%B6%E4%BB%96%E8%BF%9B%E7%A8%8B%E8% ...
- 配置handler vs2013 iis8.0
<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> <v ...
- 关于meta元信息元素
HTML头部<meta>标记通过属性定义文件的名称.内容.关键词.作者.描述等多种信息,但是只能在源代码中显示,页面上无法显示出来.此标签可以在头部有多个. A.设置页面关键词 基本语法: ...