文中部分引用自:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=408225

windows下makefile环境配置见于:http://www.cnblogs.com/cvbnm/articles/1954872.html

最近我们的助教让我们写一个贪食蛇的小程序,虽然难度并不大,但却对我们的整体编程能力的提高有一定的帮助,其中在他的提供的框架中用到了makefile,我之前代码打了不少,但并没有系统的学习编程,因此对makefile并不了解,今天在网上查了资料后发现windows下的makefile与linux下的makefile有一定的区别,经过几次尝试终于写出了自己的第一个makefile,特此记下。

首先,单文件的makefile较为简单,这里就不提了,主要是多文件的makefile较难掌握。

在我的文件中我写了一下几个文件:main.cpp, map.cpp, map.h, makefile(无后缀名,且此文件名不能更改)

main.cpp:

// 学习编程的小菜鸟
// http://www.cnblogs.com/zhuangshq/
#include <iostream>
#include "map.h" using namespace std; int main() {
cout << "Hello Makefile!" << endl;
run();
return ;
}

map.cpp:

// 学习编程的小菜鸟
// http://www.cnblogs.com/zhuangshq/ #include <iostream>
#include "map.h"
#ifndef NULL
#define NULL 0
#endif // NULL using namespace std; void run() {
// loadMap(1);
// printMap();
cout << "make success!" << endl;
}

map.h:

// 学习编程的小菜鸟
// http://www.cnblogs.com/zhuangshq/ #ifndef MAP_H
#define MAP_H // run
void run(); #endif

makefile:

// 学习编程的小菜鸟
// http://www.cnblogs.com/zhuangshq/ test: main.o map.o
g++ main.o map.o -o test
main.o: main.cpp
g++ -c main.cpp -o main.o
map.o: map.cpp
g++ -c map.cpp -o map.o
clean:
rm *.o *.exe

以上代码实现在main.cpp中调用map.cpp中的run函数,在下面我们来分析makefile的内容:

根据makefile的语法,

target ... : prerequisites ... 
            command 
            ... 
            ...

target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)。

prerequisites就是,要生成那个target所需要的文件或是目标。

command也就是make需要执行的命令。(任意的Shell命令)

那么我们的第一行生成的目标文件就是test.exe,而test.exe是由main.o和map.o生成的,接下来的两个语段分别生成了main.o和map.o

接下来我们只需要在上述文件所在的文件夹中打开命令行窗口并执行nmake命令即可生成test.exe,执行nmake clean命令即可删除生成的文件。

关于windows下的makefile学习的更多相关文章

  1. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  2. <转>Windows平台下Makefile学习笔记(二)

    本文转自:http://blog.csdn.net/clever101/article/details/8286066 上次我们学习了怎么用Makefile编译一个控制台工程.这次我们学习一下如何使用 ...

  3. Windows 下的 Makefile 编写

    Windows 下的 Makefile 编写(一)Makefile的基本规则 作者:cntrump Makefile对于很多人来说是陌生的,特别是习惯于使用 IDE 的人来说,似乎没有听说过 Make ...

  4. <转>Windows平台下Makefile学习笔记(一)

    本文转自:http://blog.csdn.net/clever101/article/details/8147352 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译平台的问题(发 ...

  5. 【VS开发】Windows平台下Makefile学习笔记

    作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译平台的问题(发现一些开源代码已经在使用VS2010开 ...

  6. Windows下使用MakeFile(Mingw)文件

    下面是我基于<C++GUI QT4编程(第二版)> 2.3节快速设计对话框编写例子地址: https://files.cnblogs.com/files/senior-engineer/g ...

  7. windows下Bat命令学习

    一.基础语法:1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令.可以使用任何文本文件编辑工具创建和修改.2.批处理是一种简单的程序,可以用 if 和 goto 来控制 ...

  8. Windows 下运行Makefile文件

    下载并安装Microsoft Visual Studio2017 配置环境变量: 计算机右击-属性-高级系统设置-环境变量-选择Path编辑-添加nmake的路径: D:\Microsoft Visu ...

  9. 在windows下搭建linux-c学习环境

    下载virtualbox并安装: https://www.virtualbox.org/wiki/Downloads 现在vagrant并安装: https://www.vagrantup.com/d ...

随机推荐

  1. openvpn 初步使用

    服务端:Centos 7.2 openvpn 2.4.3 客户端:Windows 10 安装包 openvpn的官网在国内访问不了,服务端通过yum安装,客户端在第三方网站下载的 一般的国内源应该都包 ...

  2. 【题解】Luogu P4054 [JSOI2009]计数问题

    原题传送门 我自闭了qaq 这道题非常简单,因为1<=c<=100,所以直接对每个c开二维树状数组,操作就跟模板一样 写码5分钟,调码半小时,这道题的输入顺序是x1,x2,y1,y2,我真 ...

  3. AjaxPro对象参数传递

    1.客户端配置 2.服务端注册,配置 对象参数用到的方法 3.Web.config文件配置 需要注意的是ajax以及ajaxpro调用的方法必须是静态方法,如果存在非静态方法可以从页面作为参数传递

  4. Learning-MySQL【4】:表的操作管理和 MySQL 的约束控制

    一.表的操作 1.表的基本概念 数据库与表之间的关系:数据库是由各种数据表组成的,数据表是数据库中最重要的对象,用来存储和操作数据的逻辑结构. 表由列和行组成,列是表数据的描述,行是表数据的实例. 表 ...

  5. 一小时学会 C# 6.0

    一.字符串插值 (String Interpolation) C# 6之前我们拼接字符串时需要这样 var Name = "Jack"; var results = "H ...

  6. Webpack与其他打包工具的区别

    webpack是一个模块化加载器兼打包工具,它同时支持AMD.CMD等加载规范.与其他模块化加载器相比,它有这些优势: 1.代码分割 webpack支持两种依赖加载:同步和异步.同步的依赖会在编译时直 ...

  7. MSSQL 数据库 buildindex 出错

    错误1: Executing the query "ALTER INDEX [IX_liveConfigState_Service_ServiceId_..." failed wi ...

  8. Nat Med:单独使用anti-CTLA4治疗前列腺癌效果差的原因

    肿瘤细胞能够分泌特定的细胞因子,结合T细胞表面的受体抑制其活性,从而来影响免疫细胞杀死肿瘤细胞的能力.这一类细胞因子被冠名为抗肿瘤免疫反应的“check point”.针对这类check point信 ...

  9. POJ 3278 抓奶牛(BFS入门题)

    描述 农夫约翰已被告知逃亡牛的位置,并希望立即抓住她.他开始于一个点Ñ(0≤ Ñ ≤100,000)上的数线和牛是在点ķ(0≤ ķ上相同数目的线≤100,000).农夫约翰有两种交通方式:步行和传送. ...

  10. 另一道不知道哪里来的FFT题

    给定一个序列,求出这个序列的k阶前缀和,模998244353,n<=1e5. k阶前缀和可以看成一个一个n*k的平面上的二维行走问题. 第i项对第j项的贡献是从(i,0)走到(j,k)的NE L ...