博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Makefile 一点一滴(二)—— 输出文件到指定路径
阅读量:5113 次
发布时间:2019-06-13

本文共 1698 字,大约阅读时间需要 5 分钟。

先来看最简单的 makefile 文件:

TestCpp : TestCpp.o    g++ -o TestCpp TestCpp.oTestCpp.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]$ lsbin  debug  makefile  src[@localhost TestCpp]$ makeg++ -c ./src/TestCpp.cppg++ -o TestCpp ./debug/TestCpp.og++: ./debug/TestCpp.og++: make: *** [TestCpp]  1

make失败,于是我仅make .o:

[@localhost TestCpp]$ make ./debug/TestCpp.og++ -c ./src/TestCpp.cpp[@localhost TestCpp]$ lsbin  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]$ makeg++ -c -o ./debug/TestCpp.o ./src/TestCpp.cppg++ -o TestCpp ./debug/TestCpp.o[@localhost TestCpp]$ lsbin  debug  makefile  src  TestCpp[@localhost TestCpp]$ ls debug/TestCpp.o

 

我们发现,这次输出是对的。执行 ./TestCpp,输出:

[@localhost TestCpp]$ ./TestCpp Hello C++ Language !

也没有问题。

 

 

转载于:https://www.cnblogs.com/sunrisezhang/p/3535575.html

你可能感兴趣的文章
android 7.0 新特性 和对开发者的影响
查看>>
subclipse用法
查看>>
Android打包 & Gradle用法
查看>>
NodeJS -Express 4.0 用include取代partial
查看>>
开发和研发-转载
查看>>
jni 步骤
查看>>
CSS——字体大小最常用的单位
查看>>
第五章 动画 50 动画-transition-group中appear和tag属性的作用
查看>>
杨辉三角
查看>>
文件上传
查看>>
Mysql主从同步(复制)
查看>>
SQL利用Case When Then多条件判断
查看>>
C++string类整理
查看>>
SqlBulkCopy 快速插入数据
查看>>
Entity Framework 三
查看>>
最近写了2套软件,WEB版的进销存管理系统,服装连锁店管理软件
查看>>
Android 调用已安装市场,进行软件评分的功能实现
查看>>
java中的String.format使用
查看>>
html active属性
查看>>
Maven MyBatis快速入门
查看>>