如果你安装的是VC6.0,那么就要自己配置一下
环境变量
第一步:设置环境变量。我的电脑,
右击
,->
属性
->高级->环境变量
->新建
变量名:include
值:E:\Program
Files\Microsoft
Visual
Studio\VC98\atl\include;E:\Program
Files\Microsoft
Visual
Studio\VC98\mfc\include;E:\Program
Files\Microsoft
Visual
Studio\VC98\include
变量名:lib
值:E:\Program
Files\Microsoft
Visual
Studio\VC98\mfc\lib;E:\Program
Files\Microsoft
Visual
Studio\VC98\lib
这个值是你自己的C++的安装目录。
变量名:PATH(这个不用新建的)
值:在以前的值后面加上;E:\Program
Files\Microsoft
Visual
Studio\Common\Tools\WinNT;E:\Program
Files\Microsoft
Visual
Studio\Common\MSDev98\Bin;E:\Program
Files\Microsoft
Visual
Studio\Common\Tools;E:\Program
Files\Microsoft
Visual
Studio\VC98\bin然后就可以调用cl命令编译,至于cl命令各参数的意义,你可以去网上搜如果你安装的是VS,那么系统会给你配置好环境变量,你可以直接调用Visual
Stdio
命令行提示符输入cl命令编译
‘贰’ 命令行下编译vs2010工程怎么做
1.找到vs的cl.exe所在目录,在vs2010为f:\visual
2010\vc\bin,可参考。
2.点击“我的电脑”进行环境变量的配置,找到"path"变量加分号后加入刚才的路径。
3.重新运行cmd开启新的命令窗口,输入cl检查path设置是否生效。(只需配置一次即可,以后再次运行的时候不用再运行此命令)。
4.输入vcvars32,这条命令是运行同路径下的vcvars32.bat设置它的环境变量。
5.输入cl
hello.cpp即可正常编译。
编译工程有两个方法:
"c:\program
files\microsoft
visual
studio
10.0\common7\ide\devenv.exe"
/rebuild
"release|win32"
xxxxxxxxx.sln
专门的build工具:msbuild,通过开始菜单=>microsoft
visual
studio
2010=>visual
studio
tools=>visual
studio
command
prompt
(2010)
,启动命令行环境,执行一下msbuild
‘叁’ VC++命令行操作
cl.exe所在的文件夹里面有一个批处理叫做
VSVAR32.BAT
首先运行它一次,你就可以用cl.exe来编译你的代码了。
CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。
注意,所有编译器选项都区分大小写。
若要编译但不链接,请使用 /c。
使用 NMAKE 生成输出文件。
使用 BSCMAKE 支持类浏览。
以下是一个完整的编译器选项分类列表。
优化
选项 作用
/O1 创建小代码
/O2 创建快速代码
/Oa 假设没有别名
/Ob 控制内联展开
/Od 禁用优化
/Og 使用全局优化
/Oi 生成内部函数
/Op 改善浮点数一致性
/Os 代码大小优先
/Ot 代码速度优先
/Ow 假定在函数调用中使用别名
/Ox 使用最大优化 (/Ob1gity /Gs)
/Oy 省略框架指针
代码生成
选项 作用
/clr 启用 C++ 的托管扩展并产生在公共语言运行库上运行的输出文件
/EH 指定异常处理模型
/G3 优化代码以优选 386 处理器。在 Visual C++ 5.0 中已经停用,编译器将忽略此选项
/G4 优化代码以优选 486 处理器。在 Visual C++ 5.0 中已经停用,编译器将忽略此选项
/G5 优化代码以优选 Pentium
/GB 与 /G6 等效;将 _M_IX86 的值设置为 600
/Gd 使用 __cdecl 调用约定
/Ge 激活堆栈探测
/GF
/GF 启用字符串池
/GH 调用挂钩函数 _penter
/GH 调用挂钩函数 _pexit
/GL 启用全程序优化
/Gm 启用最小重新生成
/Gr 启用运行时类型信息 (RTTI)
/Gr 使用 __fastcall 调用约定
/GS 控制堆栈探测
/GT 支持使用静态线程本地存储区分配的数据的纤程安全
/GX 启用同步异常处理
/Gy 启用函数级链接
/GZ 使用 __stdcall 调用约定
/MD 使用 MSVCRT.lib 创建多线程 DLL
/MDd 使用 MSVCRTD.lib 创建调试多线程 DLL
/ML 使用 LIBC.lib 创建单线程可执行文件
/MLd 使用 LIBCD.lib 创建调试单线程可执行文件
/MT 使用 LIBCMT.lib 创建多线程可执行文件
/MTd 使用 LIBCMTD.lib 创建调试多线程可执行文件
输出文件
选项 作用
/FA
/FA 创建列表文件
设置列表文件名
/Fd 重命名程序数据库文件
/Fe 重命名可执行文件
/Fm 创建映射文件
/Fo 创建对象文件
/Fp 指定预编译头文件名
/FR
/FR 生成浏览器文件
/Fx 将插入的代码与源文件合并
调试
选项 作用
/GS 缓冲区安全检查
/GZ 与 /RTC1 相同
/RTC 启用运行时错误检查
/Wp64 检测 64 位可移植性问题
/Yd 将完整的调试信息放在所有对象文件中
/Yl 创建调试库时插入 PCH 引用
/Z7 生成与 C 7.0 兼容的调试信息
/Zd 生成行号
/Zi 生成完整的调试信息
预处理器
选项 作用
/AI 指定在解析传递到#using 指令的文件引用时搜索的目录
/c 在预处理期间保留注释
/D 定义常数和宏
/E 将预处理器输出复制到标准输出
/EP 将预处理器输出复制到标准输出
/Fl 预处理指定的包含文件
/FU 强制使用文件名,就像它已被传递到#using 指令一样
/I 在目录中搜索包含文件
/P 将预处理器输出写入文件
/U 移除预定义宏
/U 移除所有的预定义宏
/X 忽略标准包含目录
/ZI 将调试信息包含在与“编辑并继续”兼容的程序数据库中
语言
选项 作用
/noBool 取消 C++ bool、true 和 false 关键字
/vd 取消或启用隐藏的 vtordisp 类成员
/vmb 对指向成员的指针使用最佳的基
/vmg 对指向成员的指针使用完全一般性
/vmm 声明多重继承
/vms 声明单一继承
/vmv 声明虚拟继承
/Za 禁用语言扩展
/Zc 在 /Ze 下指定标准行为
/Ze 启用语言扩展
/Zg 生成函数原型
/Zl 从 .obj 文件中移除默认库名
/Zp n 封装结构成员
/Zs 只检查语法
链接
选项 作用
/F 设置堆栈大小
/LD 创建动态链接库
/LDd 创建调试动态链接库
/link 将指定的选项传递给 LINK
/MD 使用 MSVCRT.lib 编译以创建多线程 DLL
/MDd 使用 MSVCRTD.lib 编译以创建调试多线程 DLL
/ML 使用 LIBC.lib 编译以创建单线程可执行文件
/MLd 使用 LIBCD.lib 编译以创建调试单线程可执行文件
/MT 使用 LIBCMT.lib 编译以创建多线程可执行文件
/MTd 使用 LIBCMTD.lib 编译以创建调试多线程可执行文件
预编译头
选项 作用
/Y- 忽略当前生成中的所有其他预编译头编译器选项
/Yc 创建预编译头文件
/Yd 将完整的调试信息放在所有对象文件中
/Yu 在生成期间使用预编译头文件
/YX 自动处理预编译头
杂项
选项 作用
@ 指定响应文件
/? 列出编译器选项
/c 编译但不链接
/H 限制外部(公共)名称的长度
/HELP 列出编译器选项
/J 更改默认的 char 类型
/NOLOGO 取消显示登录版权标志
/QI0f 确保 Pentium 0F 指令没有问题
/QIfdiv FDIV、FPREM、FPTAN 和 FPATAN 指令有缺陷的 Intel Pentium 微处理器的变通方法
QIfist 当需要从浮点类型转换为整型时取消 Helper 函数 _ftol 的调用
/showIncludes 在编译期间显示所有包含文件的列表
/Tc
/Tc 指定 C 源文件
/Tp
/Tp 指定 C++ 源文件
/V 设置版本字符串
/w 设置警告等级
/w 禁用所有警告
/Wall 启用所有警告,包括默认情况下禁用的警告
/WL 在从命令行编译 C++ 源代码时启用错误信息和警告消息的单行诊断
/Zm 设置编译器的内存分配限制
CL 命令行使用下列语法:
CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
下表说明CL 命令的输入项意义
option 一个或多个 CL 选项。请注意,所有选项都应用于所有指定的源文件。选项是由一个正斜杠 (/) 或一个短划线 (–) 指定的。如果某个选项带有参数,则该选项的说明指定在选项和参数之间是否允许有空格。选项名(/HELP 选项除外)区分大小写。有关更多信息,请参阅 CL 选项的顺序。
file 一个或多个源文件、.obj 文件或库的名称。CL 编译源文件并将 .obj 文件和库的名称传递给链接器。有关更多信息,请参阅 CL 文件名语法。
lib 一个或多个库名。CL 将这些名称传递给链接器。
command-file 包含多个选项和文件名的文件。有关更多信息,请参阅 CL 命令文件。
link-opt 一个或多个链接器选项。CL 将这些选项传递给链接器。
您可以指定任意数目的选项、文件名和库名,条件是命令行上的字符数不超过 1024,该限制是操作系统指定的。
CL 命令文件请参见
设置编译器选项 | 编译器选项
命令文件是一个文本文件,它包含您另外在命令行上键入或使用 CL 环境变量指定的选项和文件名。CL 接受在 CL 环境变量中或命令行上用作参数的编译器命令文件。与命令行或 CL 环境变量不同,命令文件允许使用多行选项和文件名。
命令文件中的选项和文件名将根据 CL 环境变量中或命令行上的命令文件名的位置被进行处理。但是,如果 /link 选项出现在命令文件中,则该行其余部分的所有选项将被传递给链接器。命令文件的后面几行中的选项和命令行上命令文件调用之后的选项仍被作为编译器选项接受。
命令文件一定不能包含 CL 命令。每个选项必须在同一行上开始和结束;不能使用反斜杠 (\) 跨行组合一个选项。
命令文件用一个 @ 符后接一个文件名指定;该文件名可指定绝对路径或相对路径。
‘肆’ 如何用命令行 cmd 编译运行c c 程序
Windows系统下编译连接源代码方法:
cl -GX test.c
-GX: 启动同步异常处理
上面的命令会产生可执行程序:test.exe
在命令行中直接输入:test.exe 就可运行该程序
Tips:
一、cmd中键入cl提示不认识cl命令,则由于无法找到cl.exe程序。解决方法如下:
添加系统变量(Path),这样:我的电脑->属性->高级->环境变量->系统变量,在path中添加
C:/Program Files/Microsoft Visual Studio 9.0/VC/bin;。
注意:
1、结尾最后用“;”隔开!
2、如果你的Microsoft Visual Studio 低于9.0版本或高于9.0版需要修改上面的路径名称。
二、cmd中键入cl执行编译时会出现mspdb80.dll无法找到的情况,是因为VC/Bin/下没有 “msobj80.dll,
mspdb80.dll,mspdbcore.dll,mspdbsrv.exe”这四个文件,解决的方法:
1>直接从Common7/IDE/下复制这四个文件到VC/Bin/下即可解决
2>添加系统变量(Path),这样:我的电脑->属性->高级->环境变量->系统变量,在path中添加 C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;,注意结尾最后用“;”隔开!
这样在用cl编译就不会出现mspdb80.dll文件找不到的错误了。
‘伍’ 求教关于用 VS2010用命令行如何 编译C++工程 (最好有详细示例)
用法:
devenv
[解决方案文件
|
项目文件
|
任意文件.扩展名]
[开关]
devenv
的第一个参数通常是一个解决方案文件或项目文件。
如果您希望在编辑器中自动打开文件,
也可以使用任何其他文件作为第一个参数。当您输入项目文件时,ide
会在项目文件的父目录中查找与该项目文件具有相同
基名称的
.sln
文件。如果不存在这样的
.sln
文件,
ide
将查找引用该项目的单个
.sln
文件。如果不存在这样的单个
.sln
文件,则
ide
将创建一个具有默认
.sln
文件名的未保存
的解决方案,其基名称与项目文件的基名称相同。
‘陆’ 如何在命令行下编译VC程序
如何在命令行下编译VC 程序 最近电脑装的东西太多了,编译一个程序都好半天,实在没办法,只能在命令行下了,这样还能快一点。(应该对我机器来说快很多啊。O(∩_∩)o)闲言少叙。 第一步:设置环境变量。我的电脑,右击,-> 属性 ->高级 ->环境变量 ->新建 变量名:include 值: E:\Program Files\Microsoft Visual Studio\VC98\atl\include;E:\Program Files\Microsoft Visual Studio\VC98\mfc\include;E:\Program Files\Microsoft Visual Studio\VC98\include 变量名:lib 值: E:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;E:\Program Files\Microsoft Visual Studio\VC98\lib 这个值是你自己的C++的安装目录。 在这里加入这两个变量 当然,你也可以在系统变量中添加这两个变量,这样所有这台机器上的用户都可以使用了。 都做完以后,这时就去命令行下试验一下吧。 键入 cl /?会出现一大堆参数,具体含义大家自己摸索吧,我英语不好,这里就不误导大家了。 一个实例,当然还是Hello World 了 打开记事本,敲入以下程序,重名为Hello.cpp #include int main() { cout << "HelloWorld!" << endl; return 0; } 进入命令行,找到该文件所在目录,键入cl Hello.cpp ,然后键入Hello.exe 于是乎,熟悉的Hello World 出现了。 编译多文件程序怎么办?其实加个通配符就欧了。如下: cl *.cpp 由于手头没有比较大规模的程序,就不跟大家演示了。 对了,还有关于link 选项,如果你编译时,出现了在图形界面的情况下能正常编译连接,而命令行下出现一堆link 错误,那你就得用这个选项了 cl ?.cpp /link ?.lib,用到了哪个 lib 在这里加进去就OK 了。希望对机器不是特别快的同学有用。
‘柒’ 如何在Windows下用命令行编译C/C++文件
在控制台编译运行一个C程序,在windows上的c语言编译器为cl.exe,在linux平台上的c语言编译器是gcc。
在命令提示符中,执行cl
test.c(test.c是c语言源码文件)。下图是用cl编译器编译main.cxx的谁的,并且执行生成的程序main.exe。
‘捌’ 如何在windows的命令行环境下编译C++程序
第一步:安装编译环境
下载并安装Visual Studio,本人安装的Visual Studio 2012
第二步:设置环境变量
1)右键“计算机(我的电脑)”,选择“属性->高级系统设置->环境变量”,找到“系统变量”中的“PATH"属性,双击之
2)复制Visual Studio安装目录下的路径“D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin”到环境变量中(PATH中已经有其它变量,则粘贴到最后面,并且用英文“;”与前面的变量隔开)
第三步:修改命令行启动参数
1)在“开始->运行”中输入“cmd”,开始菜单中将列出"cmd.exe",右键它,然后“发送到->发送到桌面快捷方式”
2)右键步骤1)中创建的桌面快捷方式,选择“属性->快捷方式”,找到“目标(T)”栏,修改目标为“C:\Windows\System32\cmd.exe /k vcvars32.bat”,修改好后点确定
第四步:编写test.cpp程序
1)在D盘新建一个文件夹,命名为testCode
2)打开testCode,在里面新建一个文本文档,命名为test.cpp(注意,如果你的系统设置中隐藏了已知文件类型的扩展名,必须显示它,否则你创建的test.cpp的真实名字将是test.cpp.txt)
3)用记事本或EditPlus打开test.cpp,在其中写入代码,例如:
#include <iostream>
int main()
{
std::cout<<"Hello World!"<<std::endl;
while(1)
{
//ignore
}
}
第五步:编译test.cpp
1)双击第三步中创建的cmd.exe的桌面快捷方式,打开命令行窗口
2)输入:cd d: 回车
3)输入:cd Ccodes 回车
4)输入:cl -EHsc test.cpp 回车
编译器开始编译test.cpp。我们可以从命令行的输出内容中看到编译结果。如果程序没有书写错误,一定可以编译出一个test.exe和一个test.obj。其中exe文件即是编译后的可执行程序。obj文件是按块编译产生的中间文件。至此,整个命令行编译流程结束。
‘玖’ 如何命令行编译C#sln工程
一 使用devenv来build单个project
devenv是VisualStudio的可执行程序,一般安装在“C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE”下。用来在命令行或GUI方式运行VisualStudio。其中devenv.com是命令行程序,devenv.exe是GUI的程序。默认地当你调用devenv的时候其实是启动devenv.com,除非你显示地调用devenv.exe才会启动GUI的VisualStudio。
使用devenv来build一个.sln的实例:
devenv d:\Build\MyProject\Src\MyProject.sln /Build "Release|Win32"
使用devenv来build一个.sln中的某个的实例:
devenv.exe d:\Build\MyProject\Src\NyProject.sln /build "Release|Win32" /Project MyProject1
注意:通常地.sln中的多个Projects间有依赖关系,所以虽然你只是build一个.sln中的某个Project,但是还是需要指定Project所在.sln,然后通过/Project来指定Project的名字。
如果只是单个的Project,没有引用其他的projects,这个时候可以不指定.sln,直接build Project,如下实例:
devenv d:\Build\MyProject\Src\MyProject.vcxproj /Build "Release|Win32"
注意此时实际上devenv做如下事:
此时devenv将在此project文件的父目录中查找与Project相同名字的.sln;
如果没有找到的话,然后查找其他的引用了此Project的.sln;
如果还是没有找到的话会创建临时的不保存的与Project同名的.sln。
二 devenv的更多帮助
可以使用devenv /?来查看详细的帮助。
.sln或project的路径有空格时,需要对路径加"";
多个/开关间使用空格隔开;
devenv不支持通配符或正则表达式语法;
三 MSBuild
如果你的机器上没有装有VisualStudio,那么可以使用MSBuild来build .sln或project。MSBuild可以通过安装.NETFramework来安装,一般的安装路径为C:\Windows\Microsoft.NET\Framework。其实devenv执行build时候,后台也是调用MSBuild来build的。
可以使用msbuild /?来查看详细的帮助;
简单实例如下:
MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release
MSBuild MyApp.csproj /t:Clean
/p:Configuration=Debug;/p:Platform=x86;TargetFrameworkVersion=v3.5
同样注意,如果project引用了其他的projects的时候,最好build整个.sln。
‘拾’ 如何用批处理实现vc2010工程的编译请高手指点,谢谢
用nmake.exe
命令语法如下:
NMAKE [option...] [macros...] [targets...] [@commandfile...]
说明:其中,options是NMAKE的选项,macros是在命令行中的宏定义,targets是NMAKE的目标文件列表,commandfile是包含命令行输入的文本文件(或响应文件)。
NMAKE 使用指定 /F 选项的Makefile(生成文件,通常名字是makefile);如果未指定 /F 选项,则使用当前目录下的Makefile。如果未指定Makefile,则 NMAKE 使用推理规则生成命令行 targets。
关键是这个makefile文件的编写。给你个例子 参考
BIN = cppunit
DEBUG = 1
# dynamic dll 1, static lib 2, exe 3
TARGET_TYPE = 1
# thread model, 0 single, 1 multiple static, 2 multiple dll
THREAD_MODEL = 2
CPU = x86
UNICODE = 0
CINCLUDE_PATH = /I. /I..\..\include
LLIBS =
DLLFLAGS =
CFLAGS = /W4 /Zc:forScope /Zc:wchar_t /EHsc
CFLAGS = $(CFLAGS) $(CINCLUDE_PATH)
!IF "$(UNICODE)" == "1"
CFLAGS = $(CFLAGS) /D"_UNICODE" /D"UNICODE"
!ENDIF
LDFLAGS = /NOLOGO /MACHINE:$(CPU)
LDFLAGS = $(LDFLAGS) $(LLIBS)
TARGET =
!IF "$(DEBUG)" == "1"
TARGET = $(BIN)d
CFLAGS = $(CFLAGS) /Od /Ob0 /ZI /D"_DEBUG"
LDFLAGS = $(LDFLAGS) /DEBUG
!ELSE
TARGET = $(BIN)
CFLAGS = $(CFLAGS) /O2 /Ob1 /Zi /D"NDEBUG"
LDFLAGS = $(LDFLAGS) /OPT:REF /OPT:ICF
!ENDIF
LINK_TOOL =
!IF "$(TARGET_TYPE)" == "1"
LINK_TOOL = LINK /DLL /MANIFEST:NO
TARGET = $(TARGET).dll
!ELSEIF "$(TARGET_TYPE)" == "2"
LINK_TOOL = LIB
TARGET = $(TARGET).lib
!ELSE
TARGET = $(TARGET).exe
LINK_TOOL = LINK /MANIFEST:NO
!ENDIF
!IF "$(THREAD_MODEL)" == "1"
!IF "$(DEBUG)" == "0"
DLLFLAGS = /MT
!ELSE
DLLFLAGS = /MTd
!ENDIF
!ENDIF
!IF "$(THREAD_MODEL)" == "2"
!IF "$(DEBUG)" == "0"
DLLFLAGS = /MD
!ELSE
DLLFLAGS = /MDd
!ENDIF
!ENDIF
CFLAGS = $(CFLAGS) $(DLLFLAGS)
SRC = \
AdditionalMessage.cpp \
Asserter.cpp \
BeOsDynamicLibraryManager.cpp \
BriefTestProgressListener.cpp \
CompilerOutputter.cpp \
DefaultProtector.cpp \
DllMain.cpp \
DynamicLibraryManager.cpp \
.cpp \
Exception.cpp \
Message.cpp \
PlugInManager.cpp \
PlugInParameters.cpp \
Protector.cpp \
ProtectorChain.cpp \
RepeatedTest.cpp \
ShlDynamicLibraryManager.cpp \
SourceLine.cpp \
StringTools.cpp \
SynchronizedObject.cpp \
Test.cpp \
TestAssert.cpp \
TestCase.cpp \
TestCaseDecorator.cpp \
TestComposite.cpp \
TestDecorator.cpp \
TestFactoryRegistry.cpp \
TestFailure.cpp \
TestLeaf.cpp \
TestNamer.cpp \
TestPath.cpp \
TestPlugInDefaultImpl.cpp \
TestResult.cpp \
TestResultCollector.cpp \
TestRunner.cpp \
TestSetUp.cpp \
TestSuccessListener.cpp \
TestSuite.cpp \
TestSuiteBuilderContext.cpp \
TextOutputter.cpp \
TextTestProgressListener.cpp \
TextTestResult.cpp \
TextTestRunner.cpp \
TypeInfoHelper.cpp \
UnixDynamicLibraryManager.cpp \
Win32DynamicLibraryManager.cpp \
XmlDocument.cpp \
XmlElement.cpp \
XmlOutputter.cpp \
XmlOutputterHook.cpp
OBJECTS = $(SRC:.cpp=.obj)
all : $(TARGET)
$(TARGET) : $(OBJECTS)
$(LINK_TOOL) $(LDFLAGS) $(OBJECTS) /OUT:$(TARGET)
.c.obj::
$(CC) /c $(CFLAGS) $<
#
.cpp.obj::
$(CC) /c $(CFLAGS) $<
#
clean :
del /q $(TARGET)
del /q $(OBJECTS)
del /q *.pdb
del /q *.idb
能用ide还是尽量用ide吧,多方便。