Java可以控制台中用javac命令编译java、用java命令执行java
c++在控制台中用什么命令呢?谢谢!
5 个解决方案
CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。
注意,所有编译器选项都区分大小写。
若要编译但不链接,请使用 /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 文件中移除默认库名
/Zp n 封装结构成员
/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 设置编译器的内存分配限制
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/C++ COMPILER OPTIONS
-OPTIMIZATION-
/O1 minimize space /O2 maximize speed
/Ob<n> inline expansion (default n=0) /Od disable optimizations (default)
/Og enable global optimization /Oi[-] enable intrinsic functions
/Os favor code space /Ot favor code speed
/Ox maximum optimizations /Oy[-] enable frame pointer omission
-CODE GENERATION-
/GF enable read-only string pooling /Gm[-] enable minimal rebuild
/Gy[-] separate functions for linker /GS[-] enable security checks
/GR[-] enable C++ RTTI /GX[-] enable C++ EH (same as /EHsc)
/EHs enable C++ EH (no SEH exceptions) /EHa enable C++ EH (w/ SEH exceptions)
/EHc extern "C" defaults to nothrow
/fp:<except[-]|fast|precise|strict> choose floating-point model:
except[-] - consider floating-point exceptions when generating code
fast - "fast" floating-point model; results are less predictable
precise - "precise" floating-point model; results are predictable
strict - "strict" floating-point model (implies /fp:except)
/Qfast_transcendentals generate inline FP intrinsics even with /fp:except
/GL[-] enable link-time code generation /GA optimize for Windows Application
/Ge force stack checking for all funcs /Gs[num] control stack checking calls
/Gh enable _penter function call /GH enable _pexit function call
/GT generate fiber-safe TLS accesses /RTC1 Enable fast checks (/RTCsu)
/RTCc Convert to smaller type checks /RTCs Stack Frame runtime checking
/RTCu Uninitialized local usage checks
/clr[:option] compile for common language runtime, where option is:
pure - produce IL-only output file (no native executable code)
safe - produce IL-only verifiable output file
oldSyntax - accept the Managed Extensions syntax from Visual C++ 2002/2003
initialAppDomain - enable initial AppDomain behavior of Visual C++ 2002
noAssembly - do not produce an assembly
/Gd __cdecl calling convention /Gr __fastcall calling convention
/Gz __stdcall calling convention /GZ Enable stack checks (/RTCs)
/QIfist[-] use FIST instead of ftol()
/hotpatch ensure function padding for hotpatchable images
/arch:<SSE|SSE2|AVX> minimum CPU architecture requirements, one of:
SSE - enable use of instructions available with SSE enabled CPUs
SSE2 - enable use of instructions available with SSE2 enabled CPUs
AVX - enable use of Intel(R) Advanced Vector Extensions instructions
/Qimprecise_fwaits generate FWAITs only on "try" boundaries, not inside "try"
/Qsafe_fp_loads generate safe FP loads
-OUTPUT FILES-
/Fa[file] name assembly listing file /FA[scu] configure assembly listing
/Fd[file] name .PDB file /Fe<file> name executable file
/Fm[file] name map file /Fo<file> name object file
/Fp<file> name precompiled header file /Fr[file] name source browser file
/FR[file] name extended .SBR file /Fi[file] name preprocessed file
/doc[file] process XML documentation comments and optionally name the .xdc file
-PREPROCESSOR-
/AI<dir> add to assembly search path /FU<file> forced using assembly/module
/C don't strip comments /D<name>{=|#}<text> define macro
/E preprocess to stdout /EP preprocess to stdout, no #line
/P preprocess to file /Fx merge injected code to file
/FI<file> name forced include file /U<name> remove predefined macro
/u remove all predefined macros /I<dir> add to include search path
/X ignore "standard places"
-LANGUAGE-
/Zi enable debugging information /Z7 enable old-style debug info
/Zp[n] pack structs on n-byte boundary /Za disable extensions
/Ze enable extensions (default) /Zl omit default library name in .OBJ
/Zg generate function prototypes /Zs syntax check only
/vd{0|1|2} disable/enable vtordisp /vm<x> type of pointers to members
/Zc:arg1[,arg2] C++ language conformance, where arguments can be:
forScope[-] - enforce Standard C++ for scoping rules
wchar_t[-] - wchar_t is the native type, not a typedef
auto[-] - enforce the new Standard C++ meaning for auto
trigraphs[-] - enable trigraphs (off by default)
/ZI enable Edit and Continue debug info
/openmp enable OpenMP 2.0 language extensions
-MISCELLANEOUS-
@<file> options response file /?, /help print this help message
/bigobj generate extended object format /c compile only, no link
/errorReport:option Report internal compiler errors to Microsoft
none - do not send report
prompt - prompt to immediately send report
queue - at next admin logon, prompt to send report (default)
send - send report automatically
/FC use full pathnames in diagnostics /H<num> max external name length
/J default char type is unsigned
/MP[n] use up to 'n' processes for compilation
/nologo suppress copyright message /showIncludes show include file names
/Tc<source file> compile file as .c /Tp<source file> compile file as .cpp
/TC compile all files as .c /TP compile all files as .cpp
/V<string> set version string /w disable all warnings
/wd<n> disable warning n /we<n> treat warning n as an error
/wo<n> issue warning n once /w<l><n> set warning level 1-4 for n
/W<n> set warning level (default n=1) /Wall enable all warnings
/WL enable one line diagnostics /WX treat warnings as errors
/Yc[file] create .PCH file /Yd put debug info in every .OBJ
/Yl[sym] inject .PCH ref for debug lib /Yu[file] use .PCH file
/Y- disable all PCH options /Zm<n> max memory alloc (% of default)
/Wp64 enable 64 bit porting warnings
-LINKING-
/LD Create .DLL /LDd Create .DLL debug library
/LN Create a .netmodule /F<num> set stack size
/link [linker options and libraries] /MD link with MSVCRT.LIB
/MT link with LIBCMT.LIB /MDd link with MSVCRTD.LIB debug lib
/MTd link with LIBCMTD.LIB debug lib
既然装了VC++ 6.0为什么还要去控制台编译。。。。。
直接用VC的编译按钮不就好了么?
cl编译
link连接
执行之前要设置环境,vc带了一个批处理文件,执行一下就好,那个批处理文件在vc主目录下,我都是把那个改个名字放晕到死目录下。
命令行编译有命令行编译的好处,我很多程序都是命令行编译的,这样不会有很多垃圾文件,配套版本控制也方便。还有,命令行编译比较稳定,参数你都是写在makefile中的,免得不小心调整了IDE中某个配置之后程序出问题很难排查。