深入探究VC —— 编译器cl.exe(1)【转】http://blog.csdn.net/wangningyu/article/details/4830920
cl.exe的功能是将源代码文件编译为可提供链接器使用的obj对象文件。cl.exe命令行参数形式如下:
CL (option...) file... [option | file]... [lib...] [@command-file] [/link link-opt...]
各命令行参数的意义如下 :
1、option
命令行中的"option"是指一个或多个编译选项。在指定选项时,需要在选项前加正斜杠(/)或一个短划线(-)。有一些选项还会带有参数,使用":"来指定选项的参数。比如"/sybsystem:windows,5.0"是一个编译选项,表示可执行程序执行所依赖的子系统是Windows(Win32图形用户界面的应用程序),版本最低5.0(即Windows 2000)。选项名区分大小写(/HELP选项除外),而且除了/link选项之外,其他选项是顺序没有要求。在编译时所指定的所有选项都将应用于用户指定的所有源文件。option命令行参数是可选。
2、file
命令行中的"file"是一个或多个所需要编译的源文件,也可以是.obj文件或库文件。cl.exe编译源文件并将.obj文件和库的名称传递给编译器。file参数是编译器的必须参数。
3、lib
该选项用于指定一个或多个库名。cl.exe直接将这些名称传递给链接器。lib是cl.exe的可选参数。
4、command-file
它包含多个选项和文件名的文件,为可选参数。
5、link-opt
一个或多个链接器选项。CL将这些选项传递给链接器,也是可选参数。
举例Hello World:
- // File Name: Hello.c
- // Description: First Win32 Application
- // by Koma 2009-11-18 22:05
- #include <windows.h>
- #pragma comment(lib,"user32.lib")
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pszCmdLine, int cmdShow)
- {
- MessageBox(NULL,"Hello World !","Test",MB_OK);
- return 0;
- }
那么编译该源文件命令行下:
cl /O2 /Fa /Gz /Fo Hello.c
"Hello.c"前面的都是编译选项(即option参数),"Hello.c"是源文件(file参数),没有使用lib、command-file、link-opt等命令行参数。
在命令行编译前,需要设置你的环境变量,如下所示:
include C:/Program Files/Microsoft Visual Studio/VC98/Include
lib C:/Program Files/Microsoft Visual Studio/VC98/Lib
path C:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin;C:/Program Files/Microsoft Visual Studio/VC98/Bin
(如果被修改过的并不是默认如此,设置完成需要重启电脑)
好了,关于编译器命令行参数暂时就学习到这了~~~