VC下的nmake

今天在VC的bin目录下发现了一个别nmake,查了查资料发现它用处还不小.,我们的编译还要依靠它,平时我们在用VC的时候点一下编译图标便什么都有了,具体怎么实现编译的呢?

其实分两步:   
第一步,把每一.c or .cpp文件编译成.obj文件。 
第二步,用link把每一个.obj文件和库文件连接起来生成.exe。 

而nmake的作用是把两步合并起来,编译和连接同时进行。这要用到一个类似于dos下的批文件的.make文件,这个文件里描述了nmake要执行的每一步。   
    
另外,nmake还支持incremental生成功能,即未修改的文件不重新编译。

Microsoft 程序维护实用工具 (NMAKE.EXE) 是一个 32 位,基于说明文件中包含的命令生成项目的工具。NMake具有丰富的选项,可以完成复杂编译操作。它可以辨别源代码的改动,并选择性的编译,为你节省大量不必要的编译时间。

以后有时间一定要把它好好的玩玩,看来C++里好玩的东西还多着呢,难怪那些大虾们都这么推崇C++的


from http://hi.baidu.com/iaskall/item/e91b479980c15888581461c1

有关UNIX下的makefile教程,可参见http://www.cnblogs.com/liyanwei/archive/2010/04/29/1723931.html

今天由于在windows下想写一个c++的类,但是又不想打开vs或者vc,于是直接用记事本编的。但是我写好之后(一个class,一个h,一个main文件)三个文件该怎么编译呢?我尝试着先编译类,然后再编译main,但是总是不成功。想到unix那个下的makefile,我想到了nmake,并且按照下面的方法最终编译成功。首先这三个文件分别是:

A.h


class A
{
public:
void Func(void);
};


A.cpp


#include "A.h"
#include<iostream>


void A::Func(void){std::cout<<"haha";}

然后是tem.cpp


#include<iostream>
#include "A.h"
using namespace std;

void Test(void)
{
A *p;
A a;
p = &a; // 注意 a 的生命
p->Func(); // p是“野指针”
}
int main(){
Test();
return 0;
}

最后是makefile文件。这个和unix下的makefile有点区别,但是大体上是相同的。一般都用到伪目标。


all : tem.exe
tem.exe : tem.obj A.obj
     link tem.obj A.obj
tem.obj : A.h
     cl -c tem.cpp
A.obj : A.h
     cl -c A.cpp


这个文件为hello.mk.


最后cd至这个文件夹下,然后nmake /f hello.mk,自动编译成功,生成最终的目标文件tem.exe,便可以执行了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值