控制台下运行cl命令

转载 2017年01月03日 23:35:10

前提:确保已经安装vc6或者vs系列

我们可以再命令行直接编译c++程序

在windows操作系统中,打开命令行,输入cl,若系统提示

'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件。

则说明VS没有安装或者环境变量设置不正确,可以按照如下步骤设置:
1. 确保已经安装VS,并在控制台 中键入set
    检查是否有类似如下格式的环境变量VSXXCOMNTOOLS

VS90COMNTOOLS=D:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\

    其中XX与VS版本有关:
    a) VS2003对应 VS71COMNTOOLS
    b) VS2005对应VS80COMNTOOLS
    c) VS2008对应VS90COMNTOOLS

    如果没有则执行步骤2;否则执行步骤3

2. 在我的电脑>属性>高级>环境变量>系统变量 中新建一个环静变量
    变量名: VSXXCOMNTOOLS
    变量值: VS安装目录\Common7\Tools\
    重复执行步骤1

3. 在控制台中键入

    >call "%VS90COMNTOOLS%"vsvars32.bat     <==设置cl运行时的一些环境变量
    >cl

    确保没有提示出错;否则重复步骤1

注意:用set设置环境变量,只能保证在本命令行中生效,命令行窗口一旦关闭,设置就失效了。要想设置也作用于其他命令行窗口,通过我的电脑->环境变量来设置

cl使用简介
cl有很多选项,请通过cl /?获取完整列表。这里列出了一些最重要的选项(选项的前缀可以是'-'或'/'),并且有例子。

              无选项
>cl foo.c bar.c                   <==编译出foo.obj,bar.obj并自动调用链接器link链接得到foo.exe

/c            只编译不链接
>cl /c foo.c bar.c                <==编译出foo.obj,bar.obj,但不调用链接器

/link <lib>   指定要链接的Library
>cl /link kernel32.lib foo.c      <==编译出foo.obj,并链接kernel32.lib,得到foo.exe

/I <dir>      把目录加入include搜录路径中

/D<name>{=|#}<text> 定义预处理器
>cl /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE <==定义2个预处理器

cl常用选项
/c                            只编译不链接
/O2                           设定速度最优化
/W3                           设定警告等级3

cl相关解释
关于CRT的更多解释
如何禁止警告4996

 

/D_CRT_SECURE_NO_DEPRECATE    关闭warning:4996(表示strcpy不安全的warning等)
/D_CRT_NONSTDC_NO_DEPRECATE   非标准C也关闭warning:4996
/MD                           更多关于CRT的解释

link使用简介
link有很多选项,完整列表见http://msdn.microsoft.com/zh-tw/library/y0zzbyt4.aspx,下面仅列出一些常用选项

[/debug] 产生调试信息
link /out:main.exe main.obj              <==链接main.obj并生成main.exe

[/pdb:<target>] 产生调试符号文件
link /debug /out:main.exe main.obj       <==链接main.obj并生成带有调试信息的main.exe

[/out:<target>] 指定输出文件
link /debug /pdb:main.pdb /out:main.exe main.obj     <==链接main.obj并生成带有调试信息的main.exe以及调试符号文件main.pdb

[/subsystem:<target>] 指定子系统http://msdn.microsoft.com/zh-cn/library/fcc1zstk.aspx
link /subsystem:windows /out:main.exe main.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib     <== 编译windows程序,入口函数自动设为WinMain,其中kernel32.lib,...,odbccp32.lib等为windows程序必须链接的lib

[/libpath:<dir>] 把目录加入lib搜索路径中。如果有多个路径,则要写多次/libpath
link /libpath:../common /out:main.exe main.obj lua.lib          <== 链接../common中的lua.lib

值得注意的是:
如果同时提供main和WinMain,那么必须手工指定/subsystem
如果只提供main,则链接器自动指定/subsystem:console

应用实例
通常我们把cl和link分开使用:下面是编译lua的一段脚本

cl /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DLUA_BUILD_AS_DLL l*.c
del lua.obj luac.obj <==上述cl编译所有的l*.c,而lua.obj和luac.obj是不需要link的,所以删除之
link /DLL /out:lua51.dll l*.obj

相关文章推荐

windows 控制台下运行cl命令

前提:确保已经安装vc6或者vs系列 我们可以再命令行直接编译c++程序 在windows操作系统中,打开命令行,输入cl,若系统提示 'cl' 不是内部或外部命令,也不是可运行的程序或...

windows 控制台下运行cl命令

使用之前 打开控制台(CTRL+R>cmd);键入cl回车;如果出现如下提示: 'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件。 则说明VS没有安装或者环境变量设置不正确,...

windows 控制台下运行cl命令

使用之前 打开控制台(CTRL+R>cmd);键入cl回车;如果出现如下提示: 'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件。 则说明VS没有安装或者环境变量设置不正确,可以按照...

在cmd下用cl命令编译运行C/C++源文件

一直用java来写程序,java配置好jre路径之后,在cmd下编译运行,很方便。 刚好要给一个舍友改下C程序,想到可不可以像java一样在环境变量里配置好C的编译路径呢? 于是上网搜了一下,得到...

让win32控制台程序后台运行不显示命令行窗口

win32控制台程序后台运行,不显示前端cmd那个黑框框,用户也没有办法直接×掉黑框框来结束进程,只好用任务管理器找到该进程并且杀掉

运行控制台命令(java)

有时候我们想用java去调用系统的命令实现一些功能,这个功能一般比较实用,例如调用word,记事本之类的东西来,用命令就可以了,主要用到了Process process = new ProcessBu...

VS2015 控制台cl编译器全局环境变量配置

转载地址:http://blog.csdn.net/JarrettLife/article/details/51289470 最初接触编程时,学习的是《C++ Primer Plus...

VS2015 控制台cl编译器全局环境变量配置

最初接触编程时,学习的是《C++ Primer Plus》,并且使用的是VS2010,当时又是纯小白,所以每次写书本上的程序时都要运行这个好用又庞大的IDE。然而对于像HelloWorld或书上的习题...

利用VS编辑器(cl)配置Notepad++环境以编译/运行C++

工具及环境: Notepad++ v6.9.2 VS Community 2015 Windows 10 第一步:编辑系统环境变量 win10可以直接利用Cortana找到,找到环境变量-系统变量...

Nodejs运行项目时的错误:<jsdom><CL.exe><clui.dll>解决方法

刚学nodejs,但是从别人那里拷来一个项目要先运行起来,解决这个问题花了一天半的时间,来总结总结,也希望能帮到大家。不能帮到的,也希望博大家一笑。 环境相关:run environment:w...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)