一直想自己做一个目录结构稍复杂一点的makefile,看make的manual上写的有点不好理解,再从网上搜搜也没有发现比较好的教程。
我是个搞工程的,懂点计算,也没有受过专业编程训练,对于一些技术不是很懂,有时想使用也会不知到如何下手。找不到人帮忙或者搜不到好的教程,就用比较低端的办法了。就自己捣鼓一下,写个基础实惠一点的教程,给和我一样不是专业的,又喜欢写计算程序的同人吧。
出发点是从eclipse自动生成的makefile学来的一种仅有一个主导makefile的设计方法。
平台是Ubuntu 11.04 x86,g++ version (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2,GNU Make 3.81。主要参考资料是g++ 的manual和make的manual
例子项目:假如我们有一个这样的C++项目,根目录叫root,里面有一个src目录和includes目录。includes目录里都是头文件,不分子目录。src里面根据内容的不同逻辑结构分成不同的子目录,例如module01和module02两个直接在src下的子目录,和一个在module02下的子目录mudule03.
root/
- includes
module01.hpp
module02.hpp
module03.hpp
headers.hpp
- src
- - module01
module01.cpp
- - module02
- - - module03
module03.cpp
module02.cpp
main.cpp
代码很简单,就是module01是module02的基类,module03从02派生出来。每个类的成员变量mID的值不同。基类定义了showInfo接口,显示自己的mID值。
现在就无聊地把这些示例代码贴上来。。。
module01.hpp
#ifndef __MODULE01_HPP__
#define __MODULE01_HPP__
#include <iostream>
class module01
{
public:
module01(void);
~module01(void);
void showInfo(void);
protected:
int mID;
};
#endif
module01.cpp
#include "../../includes/module01.hpp"
module01::modul