文中部分引用自: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. Kerberos 常用命令

    最近项目组用CDH搭建数据开发环境,有用到Kerberos安全组件.如下是相关命令,请参考: 进入kadmin kadmin.local / kadmin 创建数据库 kdb5_util create ...

  2. centos etcd 启动失败

    chmod -R 777 /var/lib/etcd systemctl daemon-reload cat /etc/systemd/system/etcd.service " [Unit ...

  3. 通过WireShark抓取iPhone联网数据方法

    通过WireShark抓取iPhone联网数据方法 命令行 rvictl -s <UDID> 然后再wireshark选择rvi0进行抓包即可 抓包完后,移除用命令 rvictl -x & ...

  4. Macro-Micro Adversarial Network for Human Parsing

    Macro-Micro Adversarial Network for Human Parsing ECCV-2018 2018-10-27 15:15:07 Paper: https://arxiv ...

  5. FZOJ P2109 【卡德加的兔子】

    题目描述 卡德加喜欢养兔子.他在达拉然的下水道里放了 $N$ 个兔笼(编号从 $1$ 到 $N$),里面养着他从德拉诺带来的兔子.它们的繁殖遵循斐波那契数列的规律:刚开始时,笼子里有一对刚出生的兔子. ...

  6. git pull代码冲突。怪异问题,了解一下

    当远程仓库代码与本地代码产生冲突,无法 pull,且决定放弃本地代码的时候. 或者, 碰见我这种不知道什么问题的情况, pull 成功了,但是远程仓库代码和本地代码竟然也不一样. 天呐,网管常规操作, ...

  7. Spring 中StopWatch用法

    背景 有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进 ...

  8. android ------- 开发者的 RxJava 详解

    在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github: https://github.com/ReactiveX/RxJava https://github. ...

  9. pandas数据结构之Dataframe

    Dataframe DataFrame是一个[表格型]的数据结构,可以看做是[由Series组成的字典](多个series共用同一个索引).DataFrame由按一定顺序排列的多列数据组成.设计初衷是 ...

  10. 详细解析HTML基础结构

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...