C编译器命令行模式设置技巧.doc_第1页
C编译器命令行模式设置技巧.doc_第2页
C编译器命令行模式设置技巧.doc_第3页
C编译器命令行模式设置技巧.doc_第4页
C编译器命令行模式设置技巧.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微软C/C+/C#编译器命令行模式设定和用法 微软C/C+/C#编译器命令行模式设定和用法 和在IDE中编译相比,命令行模式编译速度更快,并可以避免被IDE产生的一些附加信息 所干扰。本文将介绍微软C/C+/C#编译器命令行模式设定和用法。操作系统为Windows 2000 。 一微软C/C+编译器命令行模式设定 方法一 1.参照如下内容(根据你的系统情况,作出相应修改),编写一个批处理文件, 假定命名为vs.bat。 echo off set PATH=C:WINNTSYSTEM32;D:VS.NETVC7BIN;D:VS.NETCOMMON7IDE set INCLUDE=D:VS.NETVC7INCLUDE set LIB=D:VS.NETVC7LIB 说明: a.以上各环境变量字符串大小写无所谓,但字符之间应避免出现空格。 b.之所以加上C:WINNTSYSTEM32,目的是为了便于使用help之类的扩展命令,和 本讨论主题并无直接关系。 2.打开一个“命令提示符”窗口,执行如下命令: C:start c:vc7.bat (根据你的文件路径,作出相应修改) 即会创建一个新的“命令提示符”窗口,在这个窗口内,便可进行C+程序编译工作。具 体用法,后面再说。 这种设置方法的缺点在于,只能在步骤2新创建的“命令提示符”窗口里进行编译,一旦 关闭该窗口,即需要重新执行步骤2。 方法二 1.在桌面“我的电脑”图标上,单击右键,然后执行“属性”菜单命令,或者, 依照“开始”“设置”“控制面板”步骤,双击“系统”图标,都会弹出“系统特 性”对话框。 选中“高级”页面,点击“环境变量”按钮,即会出现图1所示的环境变 量设置窗口。(说明:任何用户都可以增/删/改用户环境变量,但只有管理员才能增/删 /改系统环境变量。对于特定计算机的每个用户来说,用户环境变量可以不相同) 图1 2.你可以设置为用户环境变量,也可以设置为系统环境变量。参考以下内容,并 参见图2所示界面。(根据你系统的情况,作出相应调整) PATH=C:WINNTSYSTEM32;D:VS.NETVC7BIN;D:VS.NETCOMMON7IDE INCLUDE=D:VS.NETVC7INCLUDE LIB=D:VS.NETVC7LIB 图2 和方法一不同的是,采用这种方式,一旦设置完毕,便可一劳永逸。无需重新启动计算 机,现在就打开一个“命令提示符”窗口,执行cl命令试试。 说明:假如你的操作系统是Windows 95/98,可以参照上面描述,直接编辑autoexec.bat 文件。 二Visual C# .NET编译器命令行模式设定 C#编译器命令行模式设定方法大同小异,具体不再赘述,只需在PATH后面加上C:W INNTMICROSOFT.NETFRAMEWORKV1.0.3705即可。目前我的机器上PATH环境变量设置 如下: PATH=C:WINNTSYSTEM32;D:VS.NETVC7BIN;D:VS.NETCOMMON7IDE;C:WINNTMICRO SOFT.NETFRAMEWORKV1.0.3705;D:VS.NETFRAMEWORKSDKBIN;D:BCC55BIN;E:ORACL EORA81BIN 三微软C/C+编译器命令行模式用法 微软C/C+编译器编译选项数目众多,在“命令提示符”窗口键入cl /?即可查看完整列 表(见附录1)。比如说,/GX启用C+异常处理机制,/GR启用C+ RTTI,等等。在此不 打算详细讨论这些编译选项用法。 以下是我的测试目录f:vstest中的一个样例文件: /1.cpp #include using namespace std; void main() cout Hello Royalcl /GX 1.cpp 运行程序,即会产生如下输出: Hello Royal 编译多个文件也很简单,参见下面例子: /2.cpp #include #include 3.cpp using namespace std; void main() CTest ct(Hello ); cout ct.str endl; /3.cpp #include using namespace std; class CTest public: CTest(string strValue): str(strValue) string str; ; 执行如下编译命令即可: F:vstestcl /GX 2.cpp 3.cpp 也可以这样编译,以指定生成的exe名字: F:vstestcl /GX /FeHello.exe 2.cpp 3.cpp (生成Hello.exe) 运行程序,输出结果如下: Hello 四Visual C# .NET编译器命令行模式用法 在“命令提示符”窗口键入csc /?即可查看完整编译选项列表(见附录2)。在此不打算 详细讨论这些编译选项用法。不过,要说明的是,你之所以无需使用/r:编译选项引用相 关库文件,就可以编译绝大多数程序,原因在于C#编译器默认引用了mscorlib.dll以及 csc.rsp文件中指定的程序库。该文件内容如下: # This file contains command-line options that the C# # command line compiler (CSC) will process as part # of every compilation, unless the /noconfig option # is specified. # Reference the common Framework libraries /r:Accessibility.dll /r:Microsoft.Vsa.dll /r:System.Configuration.Install.dll /r:System.Data.dll /r:System.Design.dll /r:System.DirectoryServices.dll /r:System.dll /r:System.Drawing.Design.dll /r:System.Drawing.dll /r:System.EnterpriseServices.dll /r:System.Management.dll /r:System.Messaging.dll /r:System.Runtime.Remoting.dll /r:System.Runtime.Serialization.Formatters.Soap.dll /r:System.Security.dll /r:System.ServiceProcess.dll /r:System.Web.dll /r:System.Web.RegularExpressions.dll /r:System.Web.Services.dll /r:System.Windows.Forms.Dll /r:System.XML.dll 可见,它引用了许多.NET标准库,假如没有充足的理由,就不要修改这个配置文件! 但我修改了我机器上的csc.rsp文件,它的尾部多了这两行: #NUnit is a unit-testing framework for all .Net languages /r:d:Nunitv2.0binnunit.framework.dll 注意,文件路径中不可有空格。例如,Nunit2.0默认安装主目录为Nuint v2.0,假如不 做必要的更改(我改成了Nunitv2.0),将无法成功引用nunit.framework.dll,并将导 致整个csc命令行编译器无法使用,小心! 假如要取消对mscorlib.dll或csc.rsp引用的话,可以使用/nostdlib或/noconfig编译选 项。 以下是我的测试目录f:vstest中的一个样例文件: /4.cs using System; namespace _4 class Class1 STAThread static void Main(string args) Console.WriteLine(Hello Royal); 执行如下编译命令: F:vstestcsc 4.cs 运行程序,即输出: Hello Royal 以下是编译多个文件的例子: /5.cs using System; using _6; namespace _5 class Class5 STAThread static void Main(string args) Class6 c6 = new Class6(Hello ); Console.WriteLine(c6.str); /6.cs using System; namespace _6 class Class6 public Class6(string strValue) str = strValue; public string str; 执行如下编译命令: F:vstestcsc 5.cs 6.cs 也可以这样编译,以指定生成的exe文件名字: F:vstestcsc /out:Hello.exe 5.cs 6.cs 运行程序,即会输出如下字样: Hello 附录一(更详细信息,可查阅MSDN) 微软C/C+ 编译器选项 -优化- /O1 最小化空间 /Op- 改善浮点数一致性 /O2 最大化速度 /Os 优选代码空间 /Oa 假设没有别名 /Ot 优选代码速度 /Ob 内联展开(默认 n=0) /Ow 假设交叉函数别名 /Od 禁用优化(默认值) /Ox 最大化选项。(/Ogityb2 /Gs) /Og 启用全局优化 /Oy- 启用框架指针省略 /Oi 启用内部函数 -代码生成- /G3 为 80386 进行优化 /GH 启用 _pexit 函数调用 /G4 为 80486 进行优化 /GR- 启用 C+ RTTI /G5 为 Pentium 进行优化 /GX- 启用 C+ EH(与 /EHsc 相同) /G6 为 PPro、P-II、P-III 进行优化 /EHs 启用 C+ EH(无 SEH 异常) /GB 为混合模型进行优化(默认) /EHa 启用 C+ EH(w/ SEH 异常) /Gd _cdecl 调用约定 /EHc 外部“C”默认为 nothrow /Gr _fastcall 调用约定 /GT 生成纤维安全 TLS 访问 /Gz _stdcall 调用约定 /Gm- 启用最小重新生成 /GA 为 Windows 应用程序进行优化 /GL- 启用链接时代码生成 /Gf 启用字符串池 /QIfdiv- 启用 Pentium FDIV 修复 /GF 启用只读字符串池 /QI0f- 启用 Pentium 0x0f 修复 /Gy 分隔链接器函数 /QIfist- 使用 FIST 而不是 ftol() /GZ 启用堆栈检查 (/RTCs) /RTC1 启用快速检查 (/RTCsu) /Ge 对所有函数强制堆栈检查 /RTCc 转换为较小的类型检查 /Gsnum 控制堆栈检查调用 /RTCs 堆栈帧运行时检查 /GS 启用安全检查 /RTCu 未初始化的本地用法检查 /Gh 启用 _penter 函数调用 /clr:noAssembly 为公共语言运行时库编译noAssembly - 不产生程序集 -输出文件- /Fafile 命名程序集列表文件 /Fo 命名对象文件 /FAsc 配置程序集列表 /Fp 命名预编译头文件 /Fdfile 命名 .PDB 文件 /Frfile 命名源浏览器文件 /Fe 命名可执行文件 /FRfile 命名扩展 .SBR 文件 /Fmfile 命名映射文件 -预处理器- /AI 添加到程序集搜索路径 /Fx 将插入的代码合并到文件 /FU 强制使用程序集/模块 /FI 命名强制包含文件 /C 不抽出注释 /U 移除预定义宏 /D=|# 定义宏 /u 移除所有预定义宏 /E 预处理到 stdout /I 添加到包含搜索路径 /EP 预处理到 stdout,没有 #line /X 忽略“标准位置” /P 预处理到文件 -语言- /Zi 启用调试信息 /Zl 忽略 .OBJ 中的默认库名 /ZI 启用“编辑并继续”调试信息 /Zg 生成函数原型 /Z7 启用旧式调试信息 /Zs 只进行语法检查 /Zd 仅有行号调试信息 /vd0|1 禁用/启用 vtordisp /Zpn 在 n 字节边界上包装结构 /vm 指向成员的指针类型 /Za 禁用扩展(暗指 /Op) /noBool 禁用“bool”关键字 /Ze 启用扩展(默认) /Zc:arg1,arg2 C+ 语言一致性,这里的参数可以是:forScope - 对范围规则强制使用标准 C+; wchar_t - wchar_t 是本机类型,不是 typedef - 杂项 - 选项响应文件 /wo 发出一次警告 n /?, /help 打印此帮助消息 /w 为 n 设置警告等级 1-4 /c 只编译,不链接 /W 设置警告等级(默认 n=1) /H 最大外部名称长度 /Wall 启用所有警告 /J 默认 char 类型是 unsigned /Wp64 启用 64 位端口定位警告 /nologo 取消显示版权消息 /WX 将警告视为错误 /showIncludes 显示包含文件名 /WL 启用单行诊断 /Tc 将文件编译为 .c /Ycfile 创建 .PCH 文件 /Tp 将文件编译为 .cpp /Yd 将调试信息放在每个 .OBJ 中 /TC 将所有文件编译为 .c /Ylsym 为调试库插入 .PCH 引用 /TP 将所有文件编译为 .cpp /Yufile 使用 .PCH 文件 /V 设置版本字符串 /YXfile 自动 .PCH /w 禁用所有警告 /Y- 禁用所有 PCH 选项 /wd 禁用警告 n /Zm 最大内存分配(默认为 %) /we 将警告 n 视为错误 -链接- /MD 与 MSVCRT.LIB 链接 /MDd 与 MSVCRTD.LIB 调试库链接 /ML 与 LIBC.LIB 链接 /MLd 与 LIBCD.LIB 调试库链接 /MT 与 LIBCMT.LIB 链接 /MTd 与 LIBCMTD.LIB 调试库链接 /LD 创建 .DLL /F 设置堆栈大小 /LDd 创建 .DLL 调试库 /link 链接器选项和库 附录二(更详细信息,可查阅MSDN) Visual C# .NET 编译器选项 - 输出文件 - /out: 输出文件名(默认值:包含主类的文件或第一个文件的基名称) /target:exe 生成控制台可执行文件(默认) (缩写: /t:exe) /target:winexe 生成 Windows 可执行文件 (缩写: /t:winexe) /target:library 生成库 (缩写: /t:library) /target:module 生成能添加到其他程序集的模块 (缩写: /t:module) /define: 定义条件编译符号 (缩写: /d) /doc: 要生成的 XML 文档文件 - 输入文件 - /recurse: 根据通配符规范,包括当前目录和子目录下的所有文件 /reference: 从指定的程序集文件引用元数据 (缩写: /r) /addmodule: 将指定的模块链接到此程序集中 - 资源 - /win32res: 指定 Win32 资源文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论