初识Makefile
来源:互联网 发布:不出门知天下事的生肖 编辑:程序博客网 时间:2024/06/06 00:20
三个文件,hello.h hello.cpp main.cpp
hello.h
- #ifndef MAKE_FILE_OO1
- #define MAKE_FILE_001
- void printHello();
- #endif
hello.cpp
- #include <iostream>
- #include "hello.h"
- using namespace std;
- void printHello()
- {
- cout<<"Hello Makefile!"<<endl;
- }
main.cpp
- #include "hello.h"
- int main()
- {
- printHello();
- return 0;
- }
下面是Makefile:
- main:main.o hello.o
- g++ -o main main.o hello.o
- main.o:main.cpp hello.h
- g++ -c -o main.o main.cpp
- hello.o:hello.cpp hello.h
- g++ -c -o hello.o hello.cpp
上面的Makefile中定义了3条规则,第1行和第2行是一条,第3和4行是一条,第5行和第6行是一条。
以规则
- main:main.o hello.o
- g++ -o main main.o hello.o
main是目标文件,冒号后面的main.o hello.o是依赖的文件
g++ -o main main.o hello.o说明如何用依赖文件生成目标文件。注意:每一行的编译命令必须以TAB键开头
同理:
- main.o:main.cpp hello.h
- g++ -c -o main.o main.cpp
所以,可以知道,这个Makefile一共定义了三个目标文件main,main.o,hello.o。
第一个目标为最终目标,也就是最终要生成的文件。生成其余的目标(main.o hello.o)都是为了生成最终目标(main)服务。
另外,可以看到生成main.o和hello.o时,编译选项中有个-c,它的意思是只编译不链接。举例来说,在编译main.o时,用到了函数printHello,但是这个函数在hello.o(hello.cpp)中导出,如果不适用-c选项,那么main.cpp编译为main.o后将会寻找函数printHello()的实体进行链接,但是我们并没有制定hello.o,所以将会出错。一般在编译单个obj模块的时候,都要加上-c选项。
0 0
- 初识makefile
- 初识makefile
- 初识Makefile
- 初识makefile
- 初识makefile
- 初识Makefile
- 初识makefile
- 初识 Makefile
- 初识Makefile
- 初识Makefile
- 初识Makefile
- Makefile初识
- 初识Makefile
- makefile初识
- Linux MakeFile初识
- 初识GDB和makefile
- 初识makefile的结构
- makefile学习经验(1)----初识Makefile
- 提高存款准备金率意味什么?
- 【Leetcode】Maximum Depth of Binary Tree (Tree Judge)
- 交叉归档导致的ora-16146
- BitMap高效显示策略(四):使用DiskLruCache作为硬盘缓存
- 【Android】启动其他Activity并返回结果
- 初识Makefile
- 虹膜识别(五):虹膜分割与图像归一化
- poj2551
- HDU 2594 Simpsons’ Hidden Talents
- 多线程之线程通信条件Condition
- UML解惑:图说UML中的六大关系
- 【Linux 操作系统】 Secure CRT 终端配置 -- 配置语法高亮 光标 和 字体
- 第十一周项目一 程序填充题
- 【Leetcode】Minimum Depth of Binary Tree (Tree Judge)