当前位置:首页 > 芯闻号 > 充电吧
[导读]CL.exe 的命令行编译断断续续接触了几次,每次都忘,每次都重新查。每次都搞不清楚语法,尤其是传给linker的参数。因为网上所有的文章都是一样的,都是详细的参数列表,都是没有实例。为了和大众保持一

CL.exe 的命令行编译断断续续接触了几次,每次都忘,每次都重新查。每次都搞不清楚语法,尤其是传给linker的参数。因为网上所有的文章都是一样的,都是详细的参数列表,都是没有实例。为了和大众保持一致,我在下面也copy一个详细的参数列表---只是在前面加几个实例

 

cl.exe test.cpp /EHsc /I"C:/OpenCV2.0/include/opencv/" cv200.lib highgui200.lib cxcore200.lib /link /LIBPATH:"C:/OpenCV2.0/vs2008/lib"

 

/LIBPATH小写也可以/libpath

 

网上找到的“经典用法”

cl *.cpp /G7 /MD /Ox /Ot /W3 /c /EHsc /I"G:/Visual C++/VC98/PlatformSDK/Include"

link *.obj rc.res /LIBPATH:"G:/Visual C++/lib" /SUBSYSTEM:WINDOWS /MACHINE:X86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib OpenGL32.Lib

 

MFC 开发如下:
编译源代码:
cl *.cpp /Ox /Ot /G7 /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /EHsc /MD /arch:SSE2 /W3 /c
资源编译 :
rc /l 0x804 winmfc.rc
链接 :
link *.obj WinMFC.res /out:WinMFC.exe /OPT:NOWIN98 /SUBSYSTEM:WINDOWS /MACHINE:X86

 

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

 

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,该限制是操作系统指定的。 

 

 

编译器

注意,所有编译器选项都区分大小写。

若要编译但不链接,请使用   /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   文件中移除默认库名     
  /Zpn     封装结构成员     
  /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    设置编译器的内存分配限制    

 

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

 

LINK 用法如下:

 

/ALIGN 指定每一节的对齐方式 
/ALIGN 选项指定程序线性地址空间中每一节的对齐方式。number 参数以字节为单位,并且必须是2 的幂。默认值是 4K (4096)。如果对齐方式产生
无效的图像,则链接器发出警告。除非正
在编写诸如设备驱动程序的应用程序,否则应不需要修改对齐方式。
/DLL 生成 DLL 
/DRIVER 创建 Windows NT 核心模式驱动程序 
/EXETYPE 生成虚拟设备驱动程序 
/EXETYPE:DYNAMIC 创建动态加载的虚拟设备驱动程序。 
/EXETYPE:DEV386 创建静态加载的虚拟设备驱动程序。这是 /EXETYPE 的默认值
/INCREMENTAL 控制增量链接 
/LARGEADDRESSAWARE 通知编译器应用程序支持大于 2 GB 的地址 
/LIBPATH 允许用户重写环境库路径 
/LIBPATH:"e:/VC/LIB" /LIBPATH:"e:/DX/LIB"
/MACHINE 指定目标平台 
` /MACHINE:{AM33|ARM|EBC|IA64|M32R|MIPS|MIPS16|MIPSFPU|MIPSFPU16|
MIPSR41XX|SH3|SH3DSP|SH4|SH5|THUMB|X86| X64/*8.0版本*/}
/MACHINE:X86
/NOENTRY 创建纯资源 DLL 
创建纯资源 DLL 时要求 /NOENTRY 选项。
/OPT 控制 LINK 优化
如果生成仅运行于 Windows NT 或 Windows 2000 上的组件,则应使用 /OPT:NOWIN98。
/SUBSYSTEM: 指定子系统 
{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|
EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|
WINDOWSCE}[,#[.##]]
/OUT 指定输出文件名 
/OUT:Hello.exe

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

轻量级AI定制模型助力低成本快速部署 北京2024年4月18日 /美通社/ -- 数据和人工智能(AI)领域的领先者SAS—今日在SAS Innovate大会上首次展示了一款变革性的、旨在帮助企业直面业务挑战的解决方案...

关键字: SAS AI模型 人工智能 INNOVATE

领先的数据和AI平台SAS Viya运用大语言模型的可解释性和可集成性改善现有流程;SAS Data Maker将在保护敏感数据的同时解决关键挑战 北京2024年4月18日...

关键字: SAS VI 生成式AI MAKER

上海2024年4月17日 /美通社/ -- 在2024 F1中国站即将拉开帷幕之际,高端全合成润滑油品牌美孚1号今日举办了品牌50周年庆祝活动。三届F1年度车手总冠军马克斯•维斯塔潘也亲临现场,共同庆祝这一里程...

关键字: BSP 汽车制造 行业标准 产品系列

深圳2024年4月17日 /美通社/ -- 今日,华为举办全球分析师大会,在"加速迈向网络智能化"主题论坛中,华为数据通信产品线副总裁赵志鹏发表了主题演讲,阐述了华为全面引入AI技术,从组件级、任务级...

关键字: NET 华为 智能化 网络

上海2024年4月17日 /美通社/ -- 当自然故土与科技绿洲激情碰撞,未来将迸发怎样的色彩?橙色,诞生自旭日光辉与苍茫大地,它是熊熊燃烧的炽火,也是浮想联翩的异次元,唤醒了我们对世界的无尽绮想,象征着人类、自然、科技...

关键字: 汽车 中国汽车 汽车产业 灯光

2024年教育数字化巨浪来袭,如何引领潮流、筑起行业壁垒? 成都2024年4月17日 /美通社/ -- 在信息技术飞速发展的今天,数字化已成为推动各行各业革新的强大引擎。特别是在教育领域,一场前所未有的变革正在悄然兴起...

关键字: AMD 数字化 智慧教育 集成

其最新一代开创性系统集成芯片及配套软件将为4600万辆汽车提供更多安全和便利功能 上海2024年4月17日 /美通社/ -- Mobileye今日宣布,其已向客户交付其最新的EyeQ™6 Lite (EyeQ...

关键字: 芯片 MOBILEYE ADAS 自动驾驶

广州2024年4月17日 /美通社/ -- 已火爆拉开帷幕的第135届广交会一期线下展中,新质生产力成为核心亮点。超3100名以先进生产力和优质为关键词的创新企业集结现场,向世界释放新质生产力赋能下的行业新"磁...

关键字: 电子 PS GO 科沃斯

上海2024年4月17日 /美通社/ -- 4月11-12日,由匠歆汽车和上海市普陀区科学技术委员会联合业内各方顶级企业及专家举办的The 6th AutoCS 2024智能汽车信息安全大会暨展览会在上海圣诺亚皇冠假日酒...

关键字: 信息安全 智能汽车 汽车信息 网络安全

北京2024年4月17日 /美通社/ -- 2024年4月13日,由北京康盟慈善基金会主办的"县域诊疗,规范同行"——肿瘤诊疗学术巡讲项目首站在广州隆重召开。本次会议邀请全国多位肺癌领域专家和县域同道...

关键字: AI技术 医疗服务 BSP 互联网
关闭
关闭