# 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;
}
~~~
編譯結果:?
?
命令行中編譯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](http://www.lellansin.com/%E5%BE%AE%E8%BD%AF-cl-exe-%E7%BC%96%E8%AF%91%E5%99%A8.html)