此模式不依赖IDE,纯命令方式编译工程

1、选择适合的编译器版本:

参考:https://mp.csdn.net/console/editor/html/105390630

2、启动cmd且对应的vs编译器的环境变量配置(本文章介绍使用的是vs2010来演示 )

方法一:在普通cmd下执行 %comspec% /k ""d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86

备注: d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\ 为您当前vs安装目录

方法二:在开始菜单栏中选择对应的cmd启动,开启命令方式如下:

3、了解编译器cl.exe和link.exe的参数

3.1 编译器 cl.exe 的编译选项 通过 cl /help 查看 (注:当前查看的是vs2010版本)

官网:https://docs.microsoft.com/en-us/cpp/build/reference/compiler-command-line-syntax?view=vs-2019

                         C/C++ 编译器选项-优化-/O1 最小化空间                          /O2 最大化速度
/Ob<n> 内联扩展(默认 n=0)               /Od 禁用优化(默认)
/Og 启用全局优化                        /Oi[-] 启用内部函数
/Os 优选代码空间                        /Ot 优选代码速度
/Ox 最大化优化                          /Oy[-] 启用帧指针省略 -代码生成-/GF 启用只读字符串池                    /Gm[-] 启用最小重新生成
/Gy[-] 分隔链接器函数                   /GS[-] 启用安全检查
/GR[-] 启用 C++ RTTI                    /GX[-] 启用 C++ EH (与 /EHsc 相同)
/EHs 启用 C++ EH (没有 SEH 异常)        /EHa 启用 C++ EH (w/ SEH 异常)
/EHc 外部“C”默认为 nothrow
/fp:<except[-]|fast|precise|strict> 选择浮点模式:except[-] - 在生成代码时考虑浮点异常fast -“fast”浮点模式;结果可预测性比较低precise -“precise”浮点模式;结果可预测strict -“strict” 浮点模式(意味着 /fp:except)
即使使用 /fp:except,/Qfast_transcendentals 也生成内联内部 FP
/GL[-] 启用链接时代码生成               /GA 为 Windows 应用程序进行优化
/Ge 对所有函数强制堆栈检查              /Gs[num] 控制堆栈检查调用
/Gh 启用 _penter 函数调用               /GH 启用 _pexit 函数调用
/GT 生成纤程安全 TLS 访问               /RTC1 启用快速检查(/RTCsu)
/RTCc 转换为较小的类型检查              /RTCs 堆栈帧运行时检查
/RTCu 未初始化的局部用法检查
/clr[:option] 为公共语言运行时编译,其中 option 是:pure - 生成只包含 IL 的输出文件(没有本机可执行代码)safe - 生成只包含 IL 的可验证输出文件oldSyntax - 接受 Visual C++ 2002/2003 的托管扩展语法initialAppDomain - 启用 Visual C++ 2002 的初始 AppDomain 行为noAssembly - 不产生程序集           /Gd __cdecl 调用约定
/Gr __fastcall 调用约定                 /Gz __stdcall 调用约定
/GZ 启用堆栈检查(/RTCs)                 /QIfist[-] 使用 FIST 而不是 ftol()
/hotpatch 确保可热修补映像的函数填充
/arch:<SSE|SSE2|AVX> CPU 架构的最低要求,以下选项之一:SSE - 启用支持 SSE 的 CPU 可用的指令SSE2 - 启用支持 SSE2 的 CPU 可用的指令AVX - 支持使用 Intel(R) 高级矢量扩展指令
/Qimprecise_fwaits 仅在“try”边界而不是“try”内部生成 FWAITs
/Qsafe_fp_loads 生成安全 FP 负载        -输出文件-/Fa[file] 命名程序集列表文件            /FA[scu] 配置程序集列表
/Fd[file] 命名 .PDB 文件                /Fe<file> 命名可执行文件
/Fm[file] 命名映射文件                  /Fo<file> 命名对象文件
/Fp<file> 命名预编译头文件              /Fr[file] 命名源浏览器文件
/FR[file] 命名扩展 .SBR 文件            /Fi[file] 命名预处理的文件
/doc[file] 处理 XML 文档注释,并可选择命名 .xdc 文件-预处理器-/AI<dir> 添加到程序集搜索路径           /FU<file> 强制使用程序集/模块
/C 不抽出注释                           /D<name>{=|#}<text> 定义宏
/E 预处理到 stdout                      /EP 预处理到 stdout,无行号
/P 预处理到文件                         /Fx 将插入的代码合并到文件中
/FI<file> 命名强制包含文件              /U<name> 移除预定义的宏
/u 移除所有预定义的宏                   /I<dir> 添加到包含搜索路径
/X 忽略“标准位置”                     -语言-/Zi 启用调试信息                        /Z7 启用旧式调试信息
/Zp[n] 在 n 字节边界上包装结构          /Za 禁用扩展
/Ze 启用扩展(默认)                      /Zl 省略 .OBJ 中的默认库名
/Zg 生成函数原型                        /Zs 只进行语法检查
/vd{0|1|2} 禁用/启用 vtordisp           /vm<x> 指向成员的指针类型
/Zc:arg1[,arg2] C++ 语言合规性,这里的参数可以是:forScope[-] - 对范围规则强制使用标准 C++wchar_t[-] - wchar_t 是本机类型,不是 typedefauto[-] - 对 auto 强制使用新的标准 C++ 含义trigraphs[-] - 启用三元祖(默认为关闭)
/ZI 启用“编辑并继续”调试信息          /openmp 启用 OpenMP 2.0 语言扩展- 杂项 -@<file> 选项响应文件                    /?, /help 打印此帮助消息
/bigobj 生成扩展的对象格式              /c 只编译,不链接
/errorReport:option 将内部编译器错误报告给 Microsoftnone - 不发送报告                       prompt - 提示立即发送报告queue - 在下一次管理员登录时,提示发送报告(默认)send - 自动发送报告                 /FC 诊断中使用完整路径名
/H<num> 最大外部名称长度                /J 默认 char 类型是 unsigned
/MP[n] 最多使用“n”个进程进行编译      /nologo 取消显示版权信息
/showIncludes 显示包含文件名            /Tc<source file> 将文件编译为 .c
/Tp<source file> 将文件编译为 .cpp      /TC 将所有文件编译为 .c
/TP 将所有文件编译为 .cpp               /V<string> 设置版本字符串
/w 禁用所有警告                         /wd<n> 禁用警告 n
/we<n> 将警告 n 视为错误                /wo<n> 发出一次警告 n
/w<l><n> 为 n 设置警告等级 1-4          /W<n> 设置警告等级(默认 n=1)
/Wall 启用所有警告                      /WL 启用单行诊断
/WX 将警告视为错误                      /Yc[file] 创建 .PCH 文件
/Yd 将调试信息放在每个 .OBJ 中          /Yl[sym] 为调试库插入 .PCH 引用
/Yu[file] 使用 .PCH 文件                /Y- 禁用所有 PCH 选项
/Zm<n> 最大内存分配(默认为 %)           /Wp64 启用 64 位端口定位警告-链接-/LD 创建 .DLL                           /LDd 创建 .DLL 调试库
/LN 创建 .netmodule                     /F<num> 设置堆栈大小
/link [链接器选项和库]                  /MD 与 MSVCRT.LIB 链接
/MT 与 LIBCMT.LIB 链接                  /MDd 与 MSVCRTD.LIB 调试库链接
/MTd 与 LIBCMTD.LIB 调试库链接          -代码分析-/analyze[:WX-] 启用代码分析             WX- - 即使调用了 /WX,也不应将代码分析警告视为错误

3.2 链接器 link.exe 的链接选项 通过 link /help 查看 (注:当前查看的是vs2010版本)

官网:https://docs.microsoft.com/en-us/cpp/build/reference/linker-options?view=vs-2019

LINK /Link for help on Linker
LINK /Lib for help on Library Manager
LINK /Dump for help on Dumper
LINK /Edit for help on Editor
LINK /CvtCIL for help on CvtCIL
LINK /Help for help on Helper

3.3 link /link 链接选项

Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.用法: LINK [选项] [文件] [@commandfile]选项:/ALIGN:#/ALLOWBIND[:NO]/ALLOWISOLATION[:NO]/ASSEMBLYDEBUG[:DISABLE]/ASSEMBLYLINKRESOURCE:文件名/ASSEMBLYMODULE:文件名/ASSEMBLYRESOURCE:文件名[,[名称][,PRIVATE]]/BASE:{地址[,大小]|@文件名,键}/CLRIMAGETYPE:{IJW|PURE|SAFE}/CLRLOADEROPTIMIZATION:{SD|MD|MDH|NONE}/CLRSUPPORTLASTERROR[:{NO|SYSTEMDLL}]/CLRTHREADATTRIBUTE:{STA|MTA|NONE}/CLRUNMANAGEDCODECHECK[:NO]/DEBUG/DEF:文件名/DEFAULTLIB:库/DELAY:{NOBIND|UNLOAD}/DELAYLOAD:dll/DELAYSIGN[:NO]/DLL/DRIVER[:{UPONLY|WDM}]/DYNAMICBASE[:NO]/ENTRY:符号/ERRORREPORT:{NONE|PROMPT|QUEUE|SEND}/EXPORT:符号/FIXED[:NO]/FORCE[:{MULTIPLE|UNRESOLVED}]/FUNCTIONPADMIN[:大小]/HEAP:reserve[,commit]/IDLOUT:文件名/IGNOREIDL/IMPLIB:文件名/INCLUDE:符号/INCREMENTAL[:NO]/KEYCONTAINER:name/KEYFILE:文件名/LARGEADDRESSAWARE[:NO]/LIBPATH:目录/LTCG[:{NOSTATUS|PGINSTRUMENT|PGOPTIMIZE|PGUPDATE|STATUS}]/MACHINE:{ARM|EBC|IA64|MIPS|MIPS16|MIPSFPU|MIPSFPU16|SH4|THUMB|X64|X86}/MANIFEST[:NO]/MANIFESTDEPENDENCY:manifest dependency/MANIFESTFILE:文件名/MANIFESTUAC[:{NO|UAC 片段}]/MAP[:文件名]/MAPINFO:{EXPORTS}/MERGE:from=to/MIDL:@commandfile/NOASSEMBLY/NODEFAULTLIB[:库]/NOENTRY/NOLOGO/NXCOMPAT[:NO]/OPT:{ICF[=迭代数]|NOICF|NOREF|REF}/ORDER:@文件名/OUT:文件名/PDB:文件名/PDBSTRIPPED:文件名/PGD:文件名/PROFILE/RELEASE/SAFESEH[:NO]/SECTION:name,[[!]{DEKPRSW}][,ALIGN=#]/STACK:reserve[,commit]/STUB:文件名/SUBSYSTEM:{BOOT_APPLICATION|CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|WINDOWSCE}[,#[.##]]/SWAPRUN:{CD|NET}/TLBID:#/TLBOUT:文件名/TSAWARE[:NO]/VERBOSE[:{ICF|LIB|REF|SAFESEH}]/VERSION:#[.#]/WX[:NO]

4、dumpbin工具

     dumpbin /EXPORTS “动态库”(查看动态库中输出的接口对象列表),还有其他选项,具体使用请参考官网:

https://docs.microsoft.com/en-us/cpp/build/reference/dumpbin-options?view=vs-2019

此命令类似于 linux 下 readelf / objdump / nm 等工具

Microsoft (R) COFF/PE Dumper Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.用法: DUMPBIN [选项] [文件]选项:/ALL/ARCHIVEMEMBERS/CLRHEADER/DEPENDENTS/DIRECTIVES/DISASM[:{BYTES|NOBYTES}]/ERRORREPORT:{NONE|PROMPT|QUEUE|SEND}/EXPORTS/FPO/HEADERS/IMPORTS[:文件名]/LINENUMBERS/LINKERMEMBER[:{1|2}]/LOADCONFIG/OUT:文件名/PDATA/PDBPATH[:VERBOSE]/RANGE:vaMin[,vaMax]/RAWDATA[:{NONE|1|2|4|8}[,#]]/RELOCATIONS/SECTION:名称/SUMMARY/SYMBOLS/TLS/UNWINDINFO

5、cmd的dos终端中文编码切换

5.1 查看当前中文编码 chcp 下图的dos中文是 utf-8 ,提示是英文字母

5.2 切换为 GBK 的中文编码 chcp 936

5.3 切换为 UTF-8 的中文编码 chcp 65001

备注:建议源代码编码考虑统一使用utf-8,便于跨平台使用

Cmake :创建vs的makefile工程(1)相关推荐

  1. OSG仿真案例(3)——cmake创建工程

    通过cmake新建一个osg的工程 1.新建一个CMakeLists.txt文件,内容如下: cmake_policy(VERSION 3.9) cmake_minimum_required(VERS ...

  2. cmake创建codeblocks项目

    为什么需要使用cmake创建codeblocks项目? 我们知道使用IDE开发c++项目非常方便,但是为什么还需要cmake创建项目呢?CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述 ...

  3. VS 的makefile工程

    自从IDE的出现简化了代码文件之间关联性管理后,就没多少愿意用makefile管理工程的了.makefile的语法规则也不复杂,加上后续的automake让编写的东西又简化了不少,但是相比IDE点一下 ...

  4. CMake和Make——make makefile cmake qmake都是什么,有什么区别?

    作者:玟清 链接:https://www.zhihu.com/question/27455963/answer/36722992 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  5. Day 3 Linux(目录篇 、文件操作篇 、压缩解压相关命令, 编辑器vi 、编译器gcc 、调试器gdb、 makefile工程管理器初学)

    一.目录篇: 1.文件处理命令:cp 英文原意:copy 语法:cp -rp[源文件或目录][目的目录] 源文件可以同时是多个,即同时复制到多个文件 -r 复制目录 -p保留文件属性,比如文件创建时间 ...

  6. 在Eclipse中创建Maven多模块工程的例子

    参考:http://ju.outofmemory.cn/entry/75620 如果,你需要创建多个项目,项目之间即独立又有关系,那么创建一个Maven多模块项目是个非常好的选择,也非常cool!怎么 ...

  7. Windows下Unity5x创建和打开游戏工程

    一.Windows下Unity5x创建游戏工程 1.打开Unity 2. 单击NEW按钮 3. Project name: 项目名称, 我们这里起名为FirstUnityProject 4. Loca ...

  8. 基于eclipse创建android的helloworld工程

    基于eclipse创建android的helloworld工程 之前用过Android studio感觉很慢,决定采用eclipse来学习Android开发.下面来看是怎么创建的. 选择File--- ...

  9. eclipse创建多模块maven工程小结

    创建maven工程步骤 1 新建一个maven工程,如下图所示: 2 选择项目名称(或项目目录),如下图所示: 3 填写maven工程相关信息,注意父maven工程的packing方式是pom,如下图 ...

  10. Maven-学习笔记05【基础-使用骨架创建Maven的Java工程】

    Java后端 学习路线 笔记汇总表[黑马程序员] 黑马程序员(腾讯微云)Maven基础讲义.pdf Maven-学习笔记01[基础-Maven基本概念] Maven-学习笔记02[基础-Maven的安 ...

最新文章

  1. 读 MySQL 源码再看 INSERT 加锁流程
  2. W1000变频器如何设定频率_变频器参数如何设定,参数故障处理办法
  3. NeurIPS 2020论文接收大排行!谷歌169篇第一、斯坦福第二、清华国内第一
  4. java 整型_Java整型计算
  5. swing开发图形界面工具配置(可自由拖控件上去)
  6. java fx消息通知,Java的FX 2警报声
  7. Intel Realsense 官方案例源码地址
  8. ustc小道消息20220106
  9. python列表中数据类型可以不同吗_Python改变列表中数据类型的方法
  10. jsonp react 获取返回值_必须要会的 50 个React 面试题(下)
  11. Jmeter函数助手
  12. 设计模式——单例模式(饿汉式、懒汉式和DCL)
  13. 使用画图软件gunplot出现的问题和解决办法
  14. 使用与不使用@RequestBody注解的区别
  15. 【175】Easy CHM的使用
  16. cad计算机画图标准,CAD画图某些常用尺寸及作图习惯
  17. Python基础之文件操作
  18. iOS播放器横竖屏切换
  19. 7-4 哈夫曼编码 (30分)
  20. 完整电商项目--(八)商品订单模块(1):订单结算与 mysql事务

热门文章

  1. 泪目!这篇博士论文致谢走红:感谢博一与我结婚的妻子...
  2. 华硕服务器系统安装系统安装教程视频,华硕的系统安装教程 华硕u盘安装系统教程...
  3. 《千字文》 梁•周兴嗣
  4. 计算机怎么切换到音乐,win10系统如何快速切换到下一首歌曲?
  5. 服务器被攻击怎么处理
  6. 山地车中轴进水表现_求山地自行车各部位上油的方法。特别是中轴和花鼓
  7. linux 解决内存不足问题(设置虚拟内存)
  8. 计算机通信机房消防要求,消防专用电话的设置场所及设计要求
  9. 深入了解电容器,电容器有哪些主要作用?
  10. 揭秘跨境电商亚马逊店铺最新骗局!!小白做亚马逊店铺如何防止上当受骗?