前言

长久以来,笔者一直想用一种管理工具,将所编写的测试程序、算法代码以及工程代码统一管理起来。因为有些是用Java写的有些是用C++写的。虽有想法,但却无行动。这又让我想起了昨天晚上看到一部电影里所说,"思想上的巨人,行动上的矮子"。笔者也不想做这种人。要笔耕不辍,要随时随地表达思想。后来通过一段时间学习Makefile。发现其强大,无比强大。

正文

就比如说,我们是用VS2010,或者什么IDE工具,你要做多少操作啊。起码你要编写多个工程,然后右键某个工程,点击编译,运行吧,有时候工程多了还卡。那反过来用Makefile呢?我们只需要make就完全生成我们所需要的程序文件了。方便吧。键盘输入速度比鼠标点来点去方便吧。你明白打魔兽打dota时键盘的重要性了吧。另外在命令行上打make,然后黑屏上一个一个编译文件,是不是有一种高端大气上档次的感觉。 不过其实Makefile确实很好,因为他可以生成多个可执行文件。让你在一个工程底下弄多个main文件。这一点让我很开心。这是其优点一;我不用修改makefile文件,即使是新加一个包含main的文件代码,我也只需要直接make就OK,可执行文件就直接跑到bin目录下了。甚至都没有obj什么lnk等一大堆乱七八糟的文件。还占空间,用vs的小伙伴们,不是这样吗?

好吧,吐槽了这么多,真心觉得makefile好用。这里我弄上来我的Makefile文件。分享给小伙伴们,大家只要放在某个目录下,不用修改,直接可以编译任意多个main函数的。

TARGET_DIR :=bin
SRC += $(wildcard *.cpp )
EXE += $(patsubst %.cpp, %, $(SRC) )
COMPILE=g++
CFLAGS= -Wall -g -O0
all : $(EXE)
.PHONEY:all % : %.cpp
@if [ ! -d bin ]; then mkdir bin; fi
$(COMPILE) $(CFLAGS) $< -o $(TARGET_DIR)/$@ clean:
rm -rf *.o

稍微解释下:上面EXE是将src下所有源码文件去掉.cpp后的文件名,这个文件名就是之后的可执行文件名。比如你的文件夹下有一个test.cpp,这EXE就是test。.PHONEY:all是说明可以生成多个目标文件。 @if [ ! -d bin ]; then mkdir bin; fi是判断文件夹下是否存在bin目录,没有就创建。底下$(COMPILE) $(CFLAGS) $< -o $(TARGET_DIR)/$@,意思是编译,编译完之后直接放在bin目录下。$<是第一个依赖文件的意思。$@是目标文件的意思。

%:%.cpp是将所有的.cpp文件直接生成目标文件,没有中间文件的。大家可以按照自己的需求进行修改。 clean大家都清楚吧。

作者

出处:http://www.cnblogs.com/gina

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

编译环境搭建:Makefile的更多相关文章

  1. u-boot 移植(一)编译环境搭建

    u-boot 移植(一)编译环境搭建 soc:s3c2440 board:jz2440 uboot:u-boot-2016.11 toolchain:gcc-linaro-7.4.1-2019.02- ...

  2. ubuntu12.04下安卓编译环境搭建总结

    前言:      因为工作需要,经常要编译安卓下的动态库,公司有已经搭建好环境的服务器,但是第一自己想自己搭建一下了解一个整个过程,另外,公司的服务器也经常出现问 题,导致编译不了,所以就想自己搭建环 ...

  3. windows下cocos2dx3.0开发环境及Android编译环境搭建

    cocos2dx更新到了3.x版本号,自己一直没有换,如今开发组要求统一换版本号,我就把搭建好开发环境的过程记录下来. 一.Windowns下开发环境搭建 1.  所需工具         1)coc ...

  4. Emscripten编译环境搭建--将C和C++编译成JS

    Emscripten编译环境搭建--将C和C++编译成JS 需求:linux环境下用js执行c.c++文件,使用emscirpten编译器 目标:搭建好Emscripten环境 环境:Ubuntu16 ...

  5. openwrt(一):openwrt源码下载及编译环境搭建

    声明:从网上各位大神的博客学习,整理后记录,非原创. 注:请用非root用户来下载源码 导航: 1. openwrt编译环境搭建 2. openwrt源码下载 3. feeds更新 1. openwr ...

  6. IoT设备程序开发及编译环境搭建初体验

    引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...

  7. Tiny4412 开发板 编译环境搭建【转】

    本文转载自:http://blog.csdn.net/beijiwei/article/details/51055369 版权声明:本文为博主原创文章,未经博主允许不得转载. /*********** ...

  8. C语言编程入门之--第二章编译环境搭建

    第二章 编译环境搭建 导读:C语言程序如何工作,首先需要编译链接成可执行文件,然后就可以运行在不同的环境中,这个“环境”的意思就是比如说,电脑,手机,路由器,蓝牙音箱等等智能设备中,其中编译器启到了关 ...

  9. linux下arm平台Qt编译环境搭建与解析

    一.概述:      我们知道QTcreator.这仅仅是个IDE,他包含了一个编译器--qmake.这两者的关系与codeblocks和g++的关系一样,首先要明确这些.      而我们在linu ...

  10. 手把手教你cuda5.5与VS2010的编译环境搭建

    参考:http://www.cnblogs.com/xing901022/archive/2013/08/09/3248469.html 目前版本的cuda是很方便的,它的一个安装里面包括了Toolk ...

随机推荐

  1. 前端学习 -- 内联框架iframe

    内联框架iframe 可以向一个页面中引入其他的外部页面 内联框架中的内容不会被搜索引擎所检索,所以开发中尽量不要使用内联框架 <iframe></iframe> 属性: sr ...

  2. Socket通信的简单例子

    客户端代码: package com.bobohe.socket; import java.io.*; import java.net.*; public class TalkClient { pub ...

  3. boost::asio::deadline_timer(理解)

    并发与并行: 并发和并行从宏观上来讲都是同时处理多路请求的概念.但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔内发生. 1.Timer.1 - 使 ...

  4. 时间序列HW

    https://www.cnblogs.com/sylvanas2012/p/4328861.html写得特别好,推荐阅读 Holt-Winters:  三阶指数平滑 Holt-Winters的思想是 ...

  5. ElasticStack系列之十一 & 同步 mysql 数据的实践与思考

    问题 1. jdbc-input-plugin 只能实现数据库的追加,对于 elasticsearch 增量写入,但经常 jdbc 源一端的数据库可能会做数据库删除或者更新操作.这样一来数据库与搜索引 ...

  6. python 启航

    first = 1while first<=9: sec = 1        while sec <= first:        print(  str(sec)+"*&qu ...

  7. 【BZOJ】2208 [Jsoi2010]连通数

    [题意]给定n个点的有向图,求可达点对数(互相可达算两对,含自身).n<=2000. [算法]强连通分量(tarjan)+拓扑排序+状态压缩(bitset) [题解]这题可以说非常经典了. 1. ...

  8. Shell编程之运算符和环境变量配置文件

    一.shell运算符:    declare命令:         declare    -i 变量名     #声明变量        eg. movie[o]=dzp     #定义数组      ...

  9. 倍增 Tarjan 求LCA

                                                                                                         ...

  10. 【树】ztree

    ztree前端参见官网http://www.ztree.me/v3/main.php Action示例 public String initLabServerTree(){ return SUCCES ...