windows 控制台下运行cl命令

前提:确保已经安装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

转自:http://blog.csdn.net/daisy19900111/article/details/8035131

windows 控制台下运行cl命令

时间: 2024-12-19 14:52:46

windows 控制台下运行cl命令的相关文章

Windows控制台下绘制简单图形

示例代码将在注册表位置:HKEY_CURRENT_USER\Software\  读写键值 bool LicenseManage::OpenRegKey(HKEY& hRetKey) { if (ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,"Software", &hRetKey)) { return true; } return false; } bool LicenseManage::CreateRegKey(stri

windows 控制台下 无法获取完整的回车键值

问题描述: 收集的网友分析: http://bbs.csdn.net/topics/370084904 因为C语言和UNIX的开发者是同事…… C语言里统一用的\n表示另起一行.微软的DOS受到了当时8位系统主流OS CP/M的影响,使用\r\n表示另起一行.Mac用\r表示另起一行. C标准库隐藏了平台的不一致性,所有标准输入输出(包括标准文件)操作时都会自动进行转换,保证语言内总是用\n.像getchar().fscanf().printf()等等都是这样的. getch()并不是C标准库的

运行常用命令

Windows系统中运行常用命令 1.explorer.exe    资源管理器 2.iexplore.exe    IE浏览器 3.services.msc    系统服务 4.regedit.exe     注册表 5.mspaint         画图程序 6.snippingtool    截图工具 7.taskmgr         任务管理器 8.mstsc           远程桌面连接 9.secpol.msc      本地安全策略 10.gpedit.msc     本地

Windows运行常用命令(win+R)

Windows运行常用命令(win+R) 1.calc: 启动计算器 2.notepad: 打开记事本 3.write: 写字板 4.mspaint: 画图板 5.snippingtool:截图工具,支持无规则截图 6.mplayer2: 简易widnows media player 7.Sndvol: 音量控制程序 8.osk: 打开屏幕键盘 9.mstsc: 远程桌面连接 10.cleanmgr: 打开磁盘清理工具 11.compmgmt.msc: 计算机管理 12.cmd.exe: CMD

windows自定义快速启动(运行)命令

自定义运行(windows键+R)里面命令,启动设置的程序,如图: 它的设置方法有两种: 第一种设置方法: 第1步:在任意地方创建一个文件夹(建议在D盘根目录创建),文件夹的名称可自定义没有特殊限制,在这里我们使用QuickStart为文件夹的名称. 第2步:把需要在运行里面打开的程序的启动快捷方式,放入QuickStart文件,启动程序的快捷方式的名称则为运行里面的命令,所有可以适当的修改快捷方式的名称,例如 这个qq的快捷方式命名为"qq",及 第3步:也是最重要的一步,右键 我的

java运行bat命令得到某个windows文件的创建时间

原文:java运行bat命令得到某个windows文件的创建时间 代码下载地址:http://www.zuidaima.com/share/1550463260150784.htm package com.zuidaima.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; /** *

Windows Server 2008 R2 域控服务器运行nslookup命令默认服务器显示 UnKnown

一.问题: 域控服务器DOS窗口运行nslookup命令提示如下: 二.原因分析: 主要原因在于域控服务器的DNS服务器没有设置反向查找区域,计算机名称是通过IP地址反向查找到域控服务器的计算机名称. 三.解决办法: 1.右键反向查找区域 ----- 新建区域. 2.选择下一步. 3.选择主要区域 ----- 在Active Directory打勾 ---- 下一步. 4.选择第二项 ---- 下一步. 5.选择IPv4反向查找区域. 6.网络输入IP地址段 192.168.10   ----

[转]Windows平台下Makefile学习笔记

Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译平台的问题(发现一些开源代码已经在使用VS2010开发,但我还没安装VS2010,我想在VS2008下编译这些代码):另一方面源码在服务器端编译的话,使用IDE的方式编译还是不太方便. 本文主要分为三部分:第一部分讲述namke工具使用makefile的用法:第二部分讲述makefile的主要语法:

Windows 平台下Git 服务器搭建

由于项目中一直在使用git作为版本管理,自己对git的理解.使用都还不是怎么的熟悉,所以准备深入了解一下git及一些常用命令的使用,于是干脆把服务端架上,通过自己的PC作为服务端同时作为客户端的角色进行折腾了...本文主要介绍在Windows平台下Git服务器的搭建,如下: 一:下载java,地址:http://www.java.com/zh_CN/ 二:安装Java.安装步骤不再详述. 三:配置Java环境变量. 右键 计算机->属性->高级系统设置->高级->环境变量->