一直想研究一下怎么让电脑批处理编译程序,今天就从vc6开始,做个记录,学习一下。

VC可以生成make文件(Project->Export Makefile),在设置好环境变量下,执行NMAKE /f "yourProjectName.mak" 就可以编译了,但这种方式前提就是需要make文件,make文件可以从VC dsp项目文件转化得到(网上可能有代码..),但是总是麻烦的,昨天偶然发现VC提供了一种可以直接命令行下编译项目的方法,我试过,很好用,如果需要写批处理的话(省得手动去编译)可以使用这种方式:


msdev yourProjectName.dsw /make "yourProjectName - Win32 Release"
 
注意后面的引号中的部分,可以去dsp文件中看看,yourProjectName后面不需要加.dsw,一般的选择就有 "yourProjectName - Win32 Release" 和"yourProjectName - Win32 Debug"两种。如果你的项目是dll,还可能会有 "yourProjectName - Win32 Release MinSize"等等。【1】

============================================

VC下用命令行编译C++ Console程序

2008-09-28 22:20:37

最近安装老古董VC6,不想安装到一半怎么也装不下去了。不过还好VC环境所需的文件基本上装全了,只是没有设置系统环境。于是只好用命令行的编译方法。

VC安装路径为:

E:\Program Files\Microsoft Visual Studio

在DOS窗口中编译的命令为:(假设文件名为score.cpp)

E:\test>"E:\Program Files\Microsoft Visual Studio\VC98\Bin\cl.exe" /GX /W3 /I "E:\Program Files\Microsoft Visual Studio\VC98\Include" /c score.cpp

编译之后,进行链接:

E:\test>"E:\Program Files\Microsoft Visual Studio\VC98\Bin\link.exe" *.obj /LIBPATH:"E:\Program Files\Microsoft Visual Studio\VC98\Lib"

这样即可生成exe可执行文件。【2】

VC6.0命令行编译及使用makefile编译的方法【3】

VC6是挺经典的一个IDE,但有时编译比较慢。作为一个典型的程序员,我总想让电脑多做点事,自己少点事。编译软件也一样,又是能够执行后不管了,让程序自己慢慢编译,人可以做其他事情,或者直接写成批处理,自动的一个个慢慢执行编译就好了。所以一直想探索一下vc6环境怎么使用命令行编译,以及vc6怎么使用makefile编译。

今天终于找到办法!虽然还停留在初浅的层面,但还是可以做到命令行自动编译了。所以写下来既是分享,也供自己以后查阅。

一、VC6命令行编译

VC6对应的可执行文件是msdev,在命令行窗口(以下简称cmd)中输入msdev /? 回车就能看到msdev的命令行参数帮助了(如果提示未知命令,那么请使用vc6安装目录下的VCVARS32.BAT设置环境)。帮助信息如下:

F:\VC_Code\maintest>msdev/?

Usage:

MSDEV [myprj.dsp|mywksp.dsw]  - load project/workspace

[<filename>]            - load source file

/?                      - display usageinformation

/EX <macroname>         - execute a VBScript macro

/OUT <filename>         - redirect command line output to afile

/USEENV                 - ignoretools.options.directories settings

/MAKE [<target>] [...]  - build specified target(s)

[<project> -<platform> <configname>]

[[<project>|ALL] -[DEBUG|RELEASE|ALL]]

/CLEAN            - delete intermediate files butdon't build

/REBUILD          - clean and build

/NORECURSE        - don't build dependent projects

下面逐个参数论述:

[myprj.dsp|mywksp.dsw]  - load project/workspace

[<filename>]            - load source file

/?                      - display usage information

/EX<macroname>         - execute aVBScript macro

/USEENV                 - ignoretools.options.directories settings

这几个选项跟本文想论述的内容关系不大,也比较好懂,有兴趣的人自己动手试一下就知道了。

/OUT<filename>         - redirectcommand line output to a file 把输入信息重定向到文件中,可以跟编译指令结合,保存编译过程的输出信息,有利于确认编译成功与否,特别是使用批处理批量编译时。

/MAKE 就是主角了,就是编译指令了。下面以几个示例来说明吧:

(1)编译工作区文件(dsw)的项目

msdev maintest.dsw/make "all - win32 debug" /out f:\result.txt

maintest.dsw 工作区文件

/make 编译指令

all 编译所有项目(project),如果工作区有多个项目,也可以指定只编译特定项目,可以使用记事本打开dsw文件,可以看到里面包含的各个项目文件。

win32 平台(platform),vc6运行基本也就是win32平台了,所以一般该参数可以省略。

debug 编译设置项(configname),可以在DEBUG|RELEASE|ALL选择

/out f:\result.txt 重定向输出,把编译过程的信息输出到f:\result.txt中。

所以上面的命令行的意思就是:把maintest.dsw工作区里的所有项目编译debug版的产品,并把编译过程的信息输出到f:\result.txt中。

据此可以容易理解下面几个命令行的意思吧:

msdev maintest.dsw /make "all - win32release"  –所有项目编译release版

msdev maintest.dsw /make "all -all"  --所有项目编译debug和release版

msdev maintest.dsw /make "maintest -release" –编译工作区中的maintest项目的release版

(2)编译项目文件(dsp)的项目

msdev maintest.dsp/make "all - win32 debug" /out f:\result.txt

maintest.dsp 项目配置文件

其他参数都跟编译工作区文件(dsw)的项目一样,注意其他的all,一直保持all就行了,因为项目配置文件里面也就只包含一个项目了。

/CLEAN            - delete intermediate files butdon't build

/REBUILD          - clean and build

跟图形化VC6 IDE中的BUILD->CLEAN和BUILD->REBUILD ALL意义是一样的,这里就不赘述了。

二、VC6使用makefile编译

VC6 IDE带的makefile编译程序是nmake,也可以在cmd中输入nmake /?获取详细的帮助信息,因为我自己没有一一使用过,所以也就不一一论述了。下面只提供一个使用的方法:

(1)在VC6图形化界面上打开一个项目,然后执行Project->Export Makefile,会在项目的目录下生成mak和dep两个文件,这就是项目配置的makefile了。

(2)然后使用如下命令行编译了:

NMAKE /f "maintest.mak"CFG="maintest - Win32 Debug" /y /d

NMAKE /f "maintest.mak"CFG="maintest - Win32 Release" /y /d

注意这里的CFG="maintest- Win32 Debug"区分大小写的,而msdev的/make "all - win32 release"是不区分大小写的。

如果你有兴趣继续探索,可以使用记事本打开dsp和mak文件看一下。

以上参考自:

【1】vc6命令行编译方法《新浪博客》

【2】VC下用命令行编译C++ Console程序

【3】VC6.0命令行编译及使用makefile编译的方法

vc6.0批量编译的更多相关文章

  1. vc6.0 点编译时提示Cannot complile the file &#39;D:\souce-code\vc-workspace\对话框\MainFrm.h&#39;; no compile tool is

    问题描写叙述: vc6.0程序,点击编译时提示对话框,内容为: Cannot complile the file 'D:\souce-code\vc-workspace\对话框\MainFrm.h'; ...

  2. VC6.0常见编译错误提示

    原文:http://c.biancheng.net/cpp/html/746.html 1) error C2001: newline in constant 编号:C2001 直译:在常量中出现了换 ...

  3. vc6.0批量加注释

    MATLAB批量加注释的方法非常简单明了,加注释是ctrl+R,去注释是ctrl+T 然后在VC中我对一条一条加注释的方法非常烦恼,我想也许会有简单的方法可以批量家注释.果然,先贴代码 '------ ...

  4. 在VC6.0中编译头文件时产生moc文件

    1.在FileView视图中 右键点击需要产生moc文件的头文件(就是类中包含Q_OBJECT宏,如果没有这个宏就不需要产生moc文件) 2.在右键菜单中选择Setting... 3.选择Custom ...

  5. VC6.0静态编译注意事项

    选择静态编译(工程->常规->Microsoft基础类->使用MFC作为静态链接库)的时候,会报错:MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: ...

  6. 比特币初始版本VC6.0编译

    1 源码下载 github上初始版本是bitcoin-0.1.5,可以从https://github.com/bitcoin/bitcoin下载,但是从网上可以找到更老版本bitcoin-0.1.0, ...

  7. VC6.0编译boost

    今天学习了下VC6.0下boost的编译,只是对regex进行了编译,据说全部编译需要2个多小时,在此记录下学习过程中遇到的问题以便今后查看. 最开始直接从网上(www.boost.org)下载了当前 ...

  8. VC6.0编译DLL,使用VS2010调用问题及解决方法

    1.做驱动的时候.做应用程序须要和驱动通信,必须建立一个DLL. 2.由于客户使用版本号太低,须要使用到VC6.0编写DLL 3.在VC6.0上编写DLL的时候,导出的函数名会出现和原函数名不正确,导 ...

  9. 让VC6.0编译出来的程序支持XP样式或XP风格

    (1)VC6.0编译出来的win32程序不支持winxp样式的原因:微软WINXP系统更新了Comctl32.dll(ver 6.0)这个“XP风格”的控件.为了保留传统的Windows界面风格,特地 ...

随机推荐

  1. R语言初涉

    R语言简单的函数的使用: “<-”表示赋值,也可以用“=”. c()为连接函数,连接中间的数据表示向量,连接中间的数据表示向量,X1 <- c()表示用一组数据为变量X1赋值. mean( ...

  2. 【转】java jawin api 中文 invoke方法

    org.jawin Class FuncPtr java.lang.Object org.jawin.FuncPtr ----------------------------------------- ...

  3. Linux简介(好!)

    Linux操作系统介绍 来源:233网校论文中心[ 2009-12-02 14:23:00 ]阅读:1作者:王长青编辑:studa20 [摘 要]文章从Unix.Minix系统的产生引出了Linux操 ...

  4. Spring中ref local与ref bean区别

    今天在做SSH框架Demo实例时,在ApplicationResources.properties文件时对<ref bean>与<ref local>感到不解,经查找资料才弄明 ...

  5. 网站linux.linuxidc.com有很多好资料

    免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 有一些介绍:www.linuxidc.com/download

  6. 从零开始PHP学习 - 第四天

    写这个系列文章主要是为了督促自己  每天定时 定量消化一些知识! 同时也为了让需要的人 学到点啥~! 本人技术实在不高!本文中可能会有错误!希望大家发现后能提醒一下我和大家! 偷偷说下 本教程最后的目 ...

  7. 影响世界的IT

    MIT BBS上说微软电话面试的一道题就是"Who do you think is the best coder,and why?”.我觉得挺有意思的,也来凑个热闹.排名不分先后. 1.Bi ...

  8. XDocument读取xml的所有元素以及XPath语法

    原文  http://www.cnblogs.com/xxyishutong/p/3326375.html <?xml version="1.0" encoding=&quo ...

  9. poj1580---欧几里得算法(辗转相除法)

    #include<stdio.h> #include<string.h> #include<string.h> ],str2[]; int len; int cal ...

  10. javascript中的继承方法

    从Javascript面向对象编程(二):构造函数的继承这里,可以看到详细的说明. 我只是将其中的例子做成html文件,便于调试罢了. 1. 构造函数绑定 <html> <head& ...