windows环境中利用NMake工具编译连接C++源代码

  这篇文章是上一篇文章(http://www.cnblogs.com/LCCRNblog/p/4532643.html)的补充,因此需要先看看上一篇文章。

  最近在写代码的时候,需要通过命令的方式来执行生成的c++源代码文件,因此需要学习有关windows环境下如何使用命令来编译连接c++原文件。这一篇文章是自己慢慢摸索实践得出的。作为自己入门的起点吧,后续还要好好深入理解这方面的知识。

1、准备

编写好main.cpp header.h header.cpp这三个源代码文件,并放入一个文件夹test中。

2、编写NMake文件

在test文件夹中创建hello.mk文件,并写入如下脚本

foo :main.obj header.obj
    cl.exe -EHsc main.obj header.obj -o foo
main.obj:main.cpp
    cl.exe -EHsc -c main.cpp
header.obj:header.h header.cpp
    cl.exe -EHsc -c header.cpp 
clean:
    del *.obj *.exe

注意脚本中空格需要保留,不能随意添加和删除。至于为什么,我暂时也不太清楚,后续慢慢了解学习。

-----------------------------------------------------------------------------补充 2015年5月29日17:17:56------------------------------------------------

第二行cl.exe -EHsc main.obj header.obj -o foo,这一行-o之前的参数都是传递个cl.exe的,-o之后的参数(包括-o)是传递个Link.exe的。

----------------------------------------------------------------------------------------------------------------------------------------------------------

我在实践的过程中,把”header.obj:header.h header.cpp“这一行中的header.h去掉,重新执行这个脚本文件,任然能够通过,这个原因我暂时还不太清楚,因为我也只是刚刚接触这方面的知识,还需要进一步的尝试,进一步的理解其中的原理。

然后在打开cmd,定位到test文件路径,首先执行vcvarsall.bat(方法在上一篇文章中有涉及),然后执行如下命令

NMake /f hello.mk

在test文件夹中就会生成foo.exe可执行文件。

如果执行如下命令

NMake /f hello.mk clean

则在test文件夹中生成的所有*.obj和*.exe都会被删除。

原文地址:https://www.cnblogs.com/LCCRNblog/p/4535327.html