编译环境搭建:Makefile
2013-08-08 11:03
183 查看
前言
********************************************************************************************************************本系列文章所提供的算法均在以下环境下编译通过。
【算法编译环境】Federa 8,linux 2.6.35.6-45.fc14.i686
【处理器】 Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz
【内存】 2025272 kB
如果有问题或者纰漏或者有好的建议更或者有更好的算法,请不吝赐教。
************************************************************************************************************************
正文
长久以来,笔者一直想用一种管理工具,将所编写的测试程序、算法代码以及工程代码统一管理起来。因为有些是用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目录,没有就创建。
底下[b]$(COMPILE) $(CFLAGS) $< -o $(TARGET_DIR)/$@,意思是编译,编译完之后直接放在bin目录下。$<是第一个依赖文件的意思。$@是目标文件的意思。[/b]
%:%.cpp是将所有的.cpp文件直接生成目标文件,没有中间文件的。大家可以按照自己的需求进行修改。
clean大家都清楚吧。
在我的机器上,大致编译显示如下:
作者:Alex
出处:http://blog.csdn.net/hellotime本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- Qt4.8.5 开发环境搭建没有生成makefile文件【编译出现的问题】
- visual studio 2013上搭建arm交叉编译环境(四)makefile配置及编译过程
- 自己动手搭建 Linux 0.12 编译环境 — Makefile
- [编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)
- 编译环境搭建:Makefile
- [编译] 4、在Linux下搭建nRF51822的开发烧写环境(makefile版)
- openwrt 编译环境搭建及Makefile
- 手把手教你cuda5.5与VS2010的编译环境搭建
- ADT+NDK搭建jni编译环境
- Windows平台下搭建Qt编译环境(VS2008)
- ubuntu14.04下搭建Android编译环境
- VC6+WDK+DriverStudio编译Windows驱动程序环境搭建
- ARM-LINUX交叉编译环境的搭建
- Linux+php+apache+oracle环境搭建之CentOS下源码编译安装PHP
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- 搭建Ubuntu下c/c++编译环境
- Android 源码编译环境搭建
- android NDK开发最方便的环境搭建及编译方法
- 开源 IM 工具编译与环境搭建攻略