天天看點

深入探究VC —— 編譯器cl.exe(1)

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

(如果被修改過的并不是預設如此,設定完成需要重新開機電腦)

好了,關于編譯器指令行參數暫時就學習到這了~~~

繼續閱讀