VS構建工具介紹
我們都知道C/C++原始碼要生成可執行的.exe程式,需要經過編譯、連結的過程。你在VS工具中只需要選擇選單Build或按一下F5可以編譯、連結、執行了,其實IDE幫我隱藏了好多的具體細節。
我先假設VS2010安裝在以下目錄中:
C:\Program Files (x86)\Microsoft Visual Studio 10.0
開啟安裝目錄下的VSDIR\VC\bin可以看到一系列的可執行程式.exe和批處理檔案,這些就是VS2010構建、編譯、連結時要用到的工具。看一下幾個主要的工具:
cl.exe:編譯程式
link.exe:連結程式
lib.exe:載入lib庫的程式
nmake.exe:用makefile進行構建、編譯的工具
命令列編譯程式
要在命令列(而不是VS)中編譯程式,先要配製環境變數。網上有些教程說執行VSDIR\VC\bin\vcvars32.bat的批處理就可以了,但我執行這個批處理時會報錯:
Setting environment for using Microsoft Visual Studio 2010 x86 tools.
這又是另外一個問題,我就不管了,直接手動配製環境變數把:
右鍵我的計算機->屬性->高階系統設定->高階->環境變數,配製的環境變數(建議配製在使用者的環境變數中)的值如下:
VS2010_DIR:
C:\Program Files (x86)\Microsoft Visual Studio 10.0
WIN_SDK:
C:\Program Files (x86)\Microsoft SDKs
path:
C:\Users\Administrator.dnx\bin;%VS2010_DIR%\VC\bin;%VS2010_DIR%\Common7\IDE
include:
%VS2010_DIR%\VC\include;%WIN_SDK%Windows\v7.0A\Include;
lib:
%VS2010_DIR%\VC\lib;%WIN_SDK%\Windows\v7.0A\Lib;
測試
D:\CppWorkspace\CommandTest\HelloWorld.cpp:
#include <iostream>
#include <stdio.h>
int main()
{
std::cout << "This is a native C++ program." << std::endl;
printf("printf: Hello World");
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
編譯結果:
命令列中編譯C/C++程式
HelloWorld.obj就是編譯出的二進位制檔案,HelloWorld.exe就是連結成的可執行檔案。
說明
在以上的編譯過程中我們只用了cl的編譯命令就幫我們最終的可執行檔案HelloWorld.exe,這是因為cl.exe程式在編譯時自己會去呼叫link.exe、lib.exe等程式。
可通過”cl -help “檢視常用的編譯選項
選項 | 作用 |
---|---|
/O1 | 建立小程式碼 |
/O2 | 建立快速程式碼 |
/Oa | 假設沒有別名 |
/Ob | 控制內聯展開 |
/Od | 禁用優化 |
/Og | 使用全域性優化 |
/Oi | 生成內部函式 |
更詳細的中文介紹也可參考這篇博文:
http://www.lellansin.com/%E5%BE%AE%E8%BD%AF-cl-exe-%E7%BC%96%E8%AF%91%E5%99%A8.html