vs2010編譯引數設定

2021-05-24 12:04:34 字數 3481 閱讀 9605

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有多個版本,不同版本間存在...