由于需要精通GDAL的源代码,所以还是有必要精通NMAKE,先来尝试创建一个NMAKE工程。

之前一篇文章Windows7中Emacs 24 shell使用Gitbash已经介绍了如何在Emacs的shell中启动gitbash进程,这样就可以轻易的利用gitbash管理git,并且能够调用很多Linux命令。

本文参考:

http://bojan-komazec.blogspot.com/2011/10/how-to-use-nmake-and-makefile.html

还有我之前的一篇普通Windows控制台窗口运行nmake编译VC

先创建目录:

mkdir HelloWorld
cd HelloWorld

用Emacs创建man.cpp文件。

#include <iostream>

int main()
{
std::cout << "Hello, world!" << std::endl;
return 0;
}

再创建一个makefile文件。

foo: main.cpp
cl main.cpp

这个makefile文件只包含了一个描述块(Description Block)

语法则是常见的makefile规则:

targets... : dependents...
commands...

现在启动windows command窗口,最普通的那种。

然后运行设置环境变量的批处理文件,来自于普通Windows控制台窗口运行nmake编译VC

C:\study\nmake>vc_env.bat x86
Setting environment for using Microsoft Visual Studio 2012 x86 tools. C:\study\nmake>where nmake
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\nmake.exe C:\study\nmake>where cl.exe
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.exe C:\study\nmake>where link.exe
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe

然后进入HelloWorld目录,运行nmake 命令:

C:\study\nmake\HelloWorld>nmake

Microsoft (R) Program Maintenance Utility Version 11.00.60610.1
Copyright (C) Microsoft Corporation. All rights reserved. cl main.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.60610.1 for x86
Copyright (C) Microsoft Corporation. All rights reserved. main.cpp
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE\xlocale(336) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
Microsoft (R) Incremental Linker Version 11.00.60610.1
Copyright (C) Microsoft Corporation. All rights reserved. /out:main.exe
main.obj

有一个警告,以后解决,不过已经看到cl命令了,cl main.cpp,并且最后生成了main.exe和main.obj文件。

现在运行main.exe程序,得到结果:

C:\study\nmake\HelloWorld>main.exe
Hello, world!

VC编译包含两步骤,cl生成obj文件, link将obj文件连接成binary。这里由于没有使用/c参数,所以自动完成了link操作。

用NMAKE创建VS2012 C++工程 HelloWorld的更多相关文章

  1. 使用 maven 创建 java web 工程

    本文主要讲述使用 maven 命令行的形式来创建  java web 工程 开发环境 jdk 1.7 maven 3.5.0 spring 3.2 tomcat 7 eclipse Mars Rele ...

  2. Java Learning 001 新建一个Java工程 HelloWorld程序

    Java Learning 001 新建一个Java工程 HelloWorld程序 Step 1 . 在Eclipse 软件里,点击: File -> New -> Java Projec ...

  3. springboot 创建子父工程

    1.创建子父工程 2.添加pom配置文件 2.1  父工程pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" ...

  4. 使用Eclipse创建Maven Web工程

    方法/步骤 1 使用Eclipse创建Maven Web工程 2 找到Maven Project,点击Next 3 勾选上Create a simple project (不使用骨架),Next 4 ...

  5. 使用Spring Tool Suite创建Maven Web工程

    使用STS或者Eclipse这样的IDE创建Maven Web工程还真不是一般的麻烦! 看了网上不少的方法介绍,操作下来总有区别,不是这里不对就是那里不对. 下面是尝试了几次之后成功的方法,记录一下. ...

  6. Eclipse创建java web工程配置Tomacat和JDK 【转】

    在学习AJAX过程中,还用Intellij就有点老旧了,这是后装个Eclipse时,发现这个配置也很头疼,现在就叫你如何创建一个web工程,同时叫你配置Eclipse. 一.创建一个web工程 1.打 ...

  7. UE4编程之C++创建一个FPS工程(一)创建模式&角色&处理输入

    转自:http://blog.csdn.net/u011707076/article/details/44180951 从今天开始,我们一起来学习一下,如何使用C++将一个不带有任何初学者内容的空模板 ...

  8. 命令行创建maven模块工程

    上一边文章,借助外部eclipse来创建模块项目,本文直接使用maven命令来创建 mvn archetype:generate -DgroupId=com.mycompany.demo -Darti ...

  9. eclipse创建maven模块工程

    创建maven模块项目,可以使用eclipse工具来完成. 1.创建父工程,注意,要选择maven-archetype-site-simple new --> maven project 填写项 ...

随机推荐

  1. JS - 跳转页面

    <!-- 第一种: --> <script type="text/javascript"> window.location.href = "log ...

  2. javascript学习笔记--迭代函数

    概要 这里的迭代函数指的是对数组对象的操作方法,js数组共有五个迭代函数:every.fifter.forEach.map.some. 1.every every方法,返回值为Boolean类型,tr ...

  3. C#实现栈

    概述 先用C#实现一个栈的类,如下: public class MyStack<T> : IEnumerable<T>, IDisposable { ; ; private T ...

  4. sofa-pbrpc 1.1.1 发布,RPC 网络通信库

    https://www.oschina.net/news/77372/sofa-pbrpc-1-1-1 https://www.oschina.net/p/sofa-pbrpc

  5. ARP欺骗,骗你没商量

    今天BOSS让我总结ARP欺骗的原理和防范策略,在这里把总结的结果贴出来吧.求人品,求速转正. ARP原理: 在局域网内部,各主机之间以MAC地址作为标识通信对象的标志.然而,有时通信发起的主机并不知 ...

  6. HADOOP之MAPREDUCE程序应用二

    摘要:MapReduce程序进行单词计数. 关键词:MapReduce程序  单词计数 数据源:人工构造英文文档file1.txt,file2.txt. file1.txt 内容 Hello   Ha ...

  7. CArray

    CArray是windows下的相当于动态数组的模板类.用起来及其方便,近期由于需要在JNI下的C语言中使用,自己参考CArray类函数,及其自己需要使用到的部分函数用C++实现出来,以供自己使用,在 ...

  8. QS Network(最小生成树)

    题意:若两个QS之间要想连网,除了它们间网线的费用外,两者都要买适配器, 求使所有的QS都能连网的最小费用. 分析:这个除了边的权值外,顶点也有权值,因此要想求最小价值,必须算边及顶点的权值和. 解决 ...

  9. How a C++ compiler implements exception handling

    Introduction One of the revolutionary features of C++ over traditional languages is its support for ...

  10. C++基础之---union联合体大小分析

    #include <iostream> using namespace std; union un { int a[7]; double b; char c[10]; int d[3]; ...