编译器
cl.exe
连接器
mlink.exe
编译格式:
cl
[
option
...]
file
... [
option
|
file
]... [
lib
...] [@
command-file
] [/link
link-opt
...]
option
是编译参数
file
是编译的源文件
lib
是程序需要的依赖库
command-file
是命令行文件
当命令行参数过长,
CMD
不支持时,可将一部分命令移到文件中,附加该文件使得文件中
的命令有效
link-opt
是链接选项,在输入
/link
后输入链接选项,则可以把这些选项传递给链接器。
注意:在格式中
[option] file [option] file
虽然是
options
是分开了,但是所有的
options
都是
同时作用于所有
file
的。
例如
cl /MT main.cpp /LD submain.cpp
的意思是
/MT /LD
同时对这个两个文件起作用。相
同的
/
互斥的参数,以后出现的为准。
例如
cl /Fo
”
src\\
”
main.cpp /Fo
”
symbol\\
”
submain.cpp
生成的
obj
文件都会放在
symbol
文件
夹下。
下面介绍编译器
(cl)
的参数
(options)
有些参数后面标记过期,该参数在
VS2005
下仍然有效,但是在后续版本中可能会被删除。
在
VS2005
中可能会有其他参数来代替过期参数,在各个过期参数中会有说明。
优化选项:
/O1
体积最小优化
相当于
/Og /Os /Oy /Ob2 /Gs /GF /Gy
的组合
/O2
速度最快优化
相当于
/Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy
的组合
/Ob
扩展
inline
函数。
/Ob0
禁用内联。默认值。
/Ob1
仅仅内联被标识为
inline
,
__inline __forceinline
,在
class
定义中写函数实现
的函数。
例如
class CTest
{
public:
int GetInt()
{
return m_iInt;
}
private:
int m_iInt;
}
该函数在
/Ob1
的参数下,会被编译成内联函数。
/Ob2
包含
/Ob1
的情况,并且编译器会把可以编译成内联,但是没有加上
inline
关