visual c++2010 編譯引數的設定。主要通過ide的選單項project->settings->c/c++頁來完成。我們可以看到這一頁的最下面project options中的內容,一般如下:
/nologo /mdd /w3 /gm /gx /zi /od /d "win32" /d "_debug" /d "_win
dows" /d "_afxdll" /d"_mbcs" /fp"debug/writingdlgtest.pch" /yu"st
dafx.h" /fo"debug/" /fd"debug/" /fd /gz /c
各個引數代表的意義,可以參考msdn.比如/nologo表示編譯時不在輸出視窗顯示這些設定(我們可以把這個引數去掉來看看效果)等等。一般我們不會直接修改這些設定,而是通過這一頁最上面的category中的各項來完成。
1.general:
warning level
用來控制警告資訊,其中level 1是最嚴重的級別;
warnings as errors
將警告資訊當作錯誤處理;
optimizations
是**優化,
可以在category的optimizations項中進行更細的設定;
generate browse info
用以生成.sbr檔案,記錄類、變數等符號資訊,
可以在category的listing files項中進行更多的設定。
debug info
生成除錯資訊;
none
不產生任何除錯資訊(編譯比較快)
line numbers only
僅生成全域性的和外部符號的除錯資訊到.obj檔案或.exe檔案,減小目標檔案的尺寸
c 7.0- compatible
記錄偵錯程式用到的所有符號資訊到.obj檔案和.exe檔案
program database
建立.pdb檔案記錄所有除錯資訊
program database for "edit & continue"
建立.pdb檔案記錄所有除錯資訊,並且支援除錯時編輯
2.c++ language:
pointer_to_member representation
用來設定類定義/引用的先後關係,一般為best-case always表示在引用類之前該類肯定已經定義了
enable exception handling
進行同步的異常處理
enable run-time type information
迫使編譯器增加**在執行時進行物件型別檢查
disable construction displacements
設定類構造/析構函式呼叫虛函式問題
3.code generation:
processor
表示**指令優化,可以為80386、80486、pentium、pentium pro,或者blend表示混合以上各種優化。
use run-time library
用以指定程式執行時使用的執行時庫(單執行緒或多執行緒,debug版本或release版本),有乙個原則就是,乙個程序不要同時使用幾個版本的執行時庫。
single-threaded
靜態連線libc.lib庫
debug single-threaded
靜態連線libcd.lib庫
multithreaded
靜態連線libcmt.lib庫
debug multithreaded
靜態連線libcmtd.lib庫
multithreaded dll
動態連線msvcrt.dll庫
debug multithreaded dll
動態連線msvcrtd.dll庫。連線了單執行緒庫就不支援多執行緒呼叫,連線了多執行緒庫就要求建立多執行緒的應用程式。
calling convention
可以用來設定呼叫約定,有三種:__cdecl、__fastcall和__stdcall。各種呼叫約定的主要區別在於,函式呼叫時,函式的引數是從左到右壓入堆疊還是從右到左壓入堆疊;在函式返回時,由函式的呼叫者來清理壓入堆疊的引數還是由函式本身來清理;以及在編譯時對函式名進行的命名修飾(可以通過listing files看到各種命名修飾方式)。
struct member alignment
用以指定資料結構中的成員變數在記憶體中是按幾位元組對齊的,根據計算機資料匯流排的位數,不同的對齊方式訪問資料的速度不一樣。這個引數對資料報網路傳輸等應用尤為重要,不是訪問速度問題,而是資料位的精確定義問題,一般在程式中使用#pragma pack來指定。
4.customize:
disable language extensions
表示不使用微軟為標準c做的語言擴充套件
eliminate duplicate strings
主要用於字串優化(將字串放到緩充池裡以節省空間),使用這個引數,使得
char *sbuffer = "this is a character buffer";
char *tbuffer = "this is a character buffer";
sbuffer和tbuffer指向的是同一塊記憶體空間;
enable function-level linking
告訴編譯器將各個函式按打包格式編譯
enables minimal rebuild
通過儲存關聯資訊到.idb檔案,使編譯器只對最新類定義改動過的原始檔進行重編譯,提高編譯速度
enable incremental compilation
同樣通過.idb檔案儲存的資訊,只重編譯最新改動過的函式
suppress startup banner and information messages
用以控制引數是否在output視窗輸出
5.listing files:
generate browse info
的功能上面已經提到過。這裡可以進行更多的設定。
exclude local variables from browse info
表示是否將區域性變數的資訊放到.sbr檔案中。
listing file type
可以設定生成的列表資訊檔案的內容:assembly-only listing僅生成彙編**檔案(.asm副檔名)
assembly with machine code
生成機器**和彙編**檔案(.cod副檔名)
assembly with source code
生成源**和彙編**檔案(.asm副檔名)
assembly, machine code,and source
生成機器碼、源**和彙編**檔案(.cod副檔名)
listing file name
為生成的資訊檔案的路徑,一般為debug或release目錄下,生成的檔名自動取原始檔的檔名。
VS2010靜態編譯
因為需要在其他電腦上執行.exe檔案,會有缺dll。所以需要靜態編譯生成.exe可執行檔案。在網上查詢了一下vs2010靜態編譯生成.exe的方法,有很多,試了其中一種,記錄一下,以便今後查閱。感謝提供方法的大神們!設定 1 專案 配置屬性 常規 mfc的使用 在靜態庫中使用mfc 如果有使用mfc...
VS2010 減小編譯大小的設定
開啟選單 工具 選項 文字編輯器 c c 高階 中的選項,把 始終使用回退位置 和 回退位置已在使用時,不警告 都設為 true 而對於下面的 回退位置 您可以可以不設定,那麼.sdf檔案和ipch資料夾則 會被放在臨時目錄中 如果你想自己指定個位置存放,則在 回退位置 後面填入 位置的絕對位址。這...
vs2010設定問題
1.help libary不能選擇以瀏覽器或者視窗的形式開啟,切換不方便 解決辦法 拷貝整個microsoft help viewer覆蓋以前的檔案,覆蓋後可能會遇到vs中f1幫助或者選單欄裡的選項失效,需要手動啟動help libary 解決。vs的help libary有多個版本,不同版本間存在...