vc中nmake.exe cl.exe 的使用
首先简单介绍一下程序是如何编译链接的。程序写好之后,我们进行编译和链接来产生可执行程序。这时候,编译器为了完成编译和链接,需要知道很多信 息。比如要编译的文件是哪一个,使用哪些编译选项进行编译,编译好之后输出到哪里,输出文件叫什么名字等等。makefile 就是被vc使用保存这些信息的方法之一,编译时程序nmake根据makefile中的信息,在用相应选项执行编译,用相应执行链接,最后生成可执行文件。vc的编译程序是CL.EXE,链接程序是LINK.EXE。关于本文所提到的vc编译链接用的程序都在目录 "$VCInstDir/Microsoft Visual Studio/VC98/Bin" 下。
整个过程如下。
在我看这个console程序的makefile的时候,突然怀疑vc6中,console,sdk,mfc等的编译也是通过执行外部的 nmake.exe来完成的。如果真是我猜的这样的话,如果我在vc的集成环境中选择rebuild all 进行编译链接的话,vc就会执行nmake.exe文件,那么nmake.exe这个文件必须存在,否则的话编译就会失败。于是,我将 nmake.exe 这个文件改了个名字。来测试,vc6的console,sdk,mfc程序是否是调用nmake来完成编译的。
结果很失望,没有了nmake.exe,这个console程序一样可以编译。这说明了,vc6并不是通过执行nmake来进行编译的。可能是调用内部的某些函数,来处理各种编译的参数和路径,再分别调用编译程序和链接程序来完成编译。不过再想想也是,连makefile文件都没有。不会是通过 nmake 来指导编译的。
那么使用makefile的程序(叫project更准确)的情况又如何呢?于是我又找了一个使用makefile的程序来试,我找的是msdn附带例子中的ping,这个是使用makefile的。这一次,如果没有nmake.exe,就无法进行编译。会报如下错误'NMAKE' 不是内部或外部命令,也不是可运行的程序或批处理文件。
Error executing d:winntsystem32cmd.exe.
由此可见,使用makefile的程序,确实是通过nmake.exe分析makefile中的内容,来指导编译的。
总结一下,用VC new->project 中的 Win32 Console Application (console),Win32 Application (sdk),MFC AppWizard (mfc) ,这样建的程序,编译不通过nmake。而使用 Makefile 的编译会通过 nmake 处理相应的makefile文件,来进行编译。顺便说一句,没有makefile的工程,他们的编译信息,编译选项放在了哪里呢?这个是我本身就知道的, 他们放在工程目录下的dsp文件中,用编辑器,比如记事本,打开dsp文件就可以看到。也可以打开dsw文件看看。
最后我又做了这样两个试验,
将CL.EXE改名。结果编译出错。错误如下。
Compiling... Error spawning cl.exe
一定程度可以说明了,编译程序是CL.EXE,VC集成环境下的编译,也是用一定的编译选项调用CL.EXE来完成的。
将LINK.EXE改名。结果链接出错。错误如下。
vc中nmake.exe cl.exe 的使用的更多相关文章
- vc中Error spawning cl.exe错误的解决方法.
可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的 “Compiling... ,Error spawning cl.exe”错误提示给郁闷过.很多人的 选择是重装, ...
- Visual C++中error spawning cl.exe解决办法
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 今天安装Vc6.0的时候出现了一个error spawning cl.exe的错误,在网上找了一些资料,才知道这是因为路径设置的问题引起的 ...
- Visual C++中error spawning cl.exe错误的两种解决方法.
可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的 “Compiling... ,Error spawning cl.exe”错误提示给郁闷过.很多人的 选择是重装, ...
- VS2008 运行VC\Bin下的link.exe, cl.exe, lib.exe提示找不到mspdb80.dll的解决方法
天在用link.EXE的LIB命令生成用于连接(LINK)使用的lib文件时提示:找不到mspdb80.dll. 原因:Microsoft Visual Studio\VC\Bin\下没有 “msob ...
- Visual C++中error spawning cl.exe解决方法
点击“Tools”,选择“选项”,选择“选项”中的“目录” 目录的目录下有四个选项 需要对它们设置正确的路径 我是按照默认路径安装的 可执行文件: C:\Program Files\Microsoft ...
- NMAKE:fatal error U1077.“\..\.cl.exe” return code 0xc0000135
NMAKE:fatal error U1077.“cl.exe” return code 0xc0000135 产生原因:在安装visual studio的时候没有勾选注册环境变量导致的. 解决办法: ...
- Notepad++中调用cl.exe编译器(Windows)
Notepad++中调用cl.exe编译器(Windows) 近来在notepad++中写代码,写完后总是习惯性的想去VS里面编译一下,看看代码是否有误.但有时候一些零碎的小文件总是懒得再VS中打开, ...
- 深入探究VC —— 编译器cl.exe(2)
这一章节介绍的全是VC编译器选项,option参数是cl.exe的编译选项,是cl.exe命令行参数中最复杂.也是最常用的.下面介绍一些常用的编译选项: 1.代码生成有关 这些选项将影响编译完成后生成 ...
- 深入探究VC —— 编译器cl.exe(1)
cl.exe的功能是将源代码文件编译为可提供链接器使用的obj对象文件.cl.exe命令行参数形式如下: CL (option...) file... [option | file]... [lib. ...
随机推荐
- 动态规划面试题基础合集1--数学三角形,LIS , LCS, CSD
动态规划的一般思路是分为四步,即:寻找最优子结构.递归定义最优子结构.自底向上求解最优子结构和构造最优解. 接下来我列举出几个常见的动态规划面试题进行说明. (1)数学三角形:比较简单,直接贴一个我看 ...
- AutoCompleteTextView,Spinner,消息提示
package com.example.wang.testapp2; import android.app.Notification; import android.app.NotificationM ...
- Kafka集成SparkStreaming
Spark Streaming + Kafka集成指南 Kafka项目在版本0.8和0.10之间引入了一个新的消费者API,因此有两个独立的相应Spark Streaming包可用.请选择正确的包, ...
- 百度Webuploader 大文件分片上传(.net接收)
前阵子要做个大文件上传的功能,找来找去发现Webuploader还不错,关于她的介绍我就不再赘述. 动手前,在园子里找到了一篇不错的分片上传的帖子,参考之后,踏出了第一步.此文记录我这次实践的点滴,仅 ...
- MySQL 存储过程传参数实现where id in(1,2,3,...)示例
一个MySQL 存储过程传参数的问题想实现例如筛选条件为:where id in(1,2,3,...),下面有个不错的示例,感兴趣的朋友可以参考下 正常写法: ,,,,...); 当在写存储过程 ...
- 8-1 Stacks of Flapjacks UVA120
题意: 有一叠煎饼在锅里 n n<=30张 每张都有一个数字 代表它的大小 厨师每次可以选择一个数k 把从锅底开始数第k张上面的煎饼全部反过来 即原来的在上面的煎饼现在到了下面 ...
- Tuning Optimization
2017-02-22 在经过Trace的分析并重新优化之后 CPU: Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.6GHz 24core 如上图,CPU使用率平均低于60% ...
- thinkphp中导入和使用阿里云OSSsdk
照做绝对行,在ThinkPHP中,第三方库都放在ThinkPHP/Library/Vendor/路径下. 1.下载OSS PHP SDK:https://help.aliyun.com/documen ...
- [CodeForces 893D] Credit Card 贪心
题意: Recenlty Luba有一张信用卡,一开始金额为0,每天早上可以充值任意数量的钱,但有限制,卡里的钱不能超过D.到了晚上,银行会对信用卡进行一次操作,操作有三种: 1.a[i]>0, ...
- [ 原创 ]新手作品-我的第一款安卓自学作品---YY音乐诞生了
YY音乐---我前前后后断断续续花了3个月时间,边从0基础开始学Android 和Java,边开始做自己的Android第一款软件,之间看了许多教学视频,许多博客,才算Android入了一点点门道,终 ...