在《C++编程思想》里举出了在Linux\Unix下使用makefile在命令行形式下编译C/C++源文件的方法,如何在Windows 2000/Windows NT 4.0平台下直接在“命令提示符”(DOS盒)里实现这一点呢?(不用VC 6.0 的IDE)

解决方案 »

  1.   

    花了一个小时,还是把这个问题整明白啦!现把问题的完整背景和解决方法说明如下,希望能对遇上类似问题的朋友有所帮助。
       一、问题背景:
       Brues Eckel给出的源代码文件夹下只有"*.cpp"、"*.h"和"*.makefile"格式的文件,其中“*.makefile”给出了在Borland、Gcc和Microsoft每种环境下的版本,如在Microsoft环境(我想应该指VC++吧)下的版本文件名为“Microsoft.makefile”,显然,在Windows的“命令提示符(DOS盒)”内是可以直接对这个Makefile用命令行编译工具(如Nmake.exe)进行编译的,但怎样实现这一点呢?  二、解决方法:
      假定大家已安装了VC ++ 6.0。
      在VC的安装目录(如C:\Program Files\Microsoft Visual Studio\VC98\Bin)下,大家可以看见有个批处理文件:VCVARS32.bat,用文本方式打开可见正是这个批处理文件对VC开发环境变量作了设置!将此文件Copy到那个源代码所在的路径下(笔者的机子上是E:\C++\Samples\TIC\code),为了方便起见,不妨给它换个名,比如叫VC32.bat。
      发送一个“命令提示符”快捷方式到Windows桌面上,鼠标右击该快捷方式,点击右键菜单的“属性”进入“命令提示符 属性”窗口,点选“快捷方式”一页,在“起始位置”栏中输入想要进行命令行编译工作的路径(如上面的E:\C++\Samples\TIC\code),按“确定”关闭此对话框。进行完此项设定后,双击打开此“命令提示符”快捷方式后,提示符就自动进入在你选定的工作路径(E:\C++\Samples\TIC\code)了!若是Win9x系统,你还要在“批处理文件”一栏输入你上面做的那个批处理文件名:VC32.bat(后面就知道这样做的好处了)。
       如上所说,双击打开桌面上的这个“命令提示符”快捷方式后,提示符就自动进入在你选定的工作路径(E:\C++\Samples\TIC\code)下。在NT系统下,输入命令如下:
       E:\C++\Samples\TIC\code>VC32        
       此命令执行那个批处理文件VC32.bat(也就是VCVARS32.bat)。
       若是在Win9x平台下,你也遵照上一步在“批处理文件”填了内容了,这一步就可免了!
       系统将显示一行提示信息,表示已执行了该批处理文件并对环境变量作好了设置:
       Setting environment for using Microsoft Visual C++ tools.
       OK!现在我们来到一个存放源码的子文件夹(如第二章c02)中:
       E:\C++\Samples\TIC\code>cd c02
       E:\C++\Samples\TIC\code\c02>
       可以看见作者做的那个Microsoft版本的Makefile——Microsoft.makefile。
       现在我们执行Nmake.exe对之进行编译:
       E:\C++\Samples\TIC\code\c02>nmake -f Microsoft.makefile
       冒出一大堆东东,都是编译提示信息,而后...
       OK!编译成功!!作者在这个Microsoft.makefile中把这一章所有的实例源代码给“批处理”了一把(具体怎么做的你可以用文本方式把它打开看一下就很清楚了)。
       比如这个很经典的"hello.cpp"
       ... ...
       #include <iostream> // Stream declarations
       using namespace std;   int main() {
       cout << "Hello, World! I am "
           << 8 << " Today!" << endl;
       } ///:~
      ... ...
       在命令行中键入:
       E:\C++\Samples\TIC\code\c02>hello
       执行Nmake.exe通过编译Microsoft.makefile为你生成的可执行文件hello.exe。
       机子显示:
       Hello, World! I am 8 Today!  一切都OK了!现在,你可以不理那个庞大复杂的VC ++ 6.0的IDE以及MFC什么的,在这个原始而且简单的命令行环境下专心致志地学习标准C++语言了。