最近、Visual C++をいじっているのでメモ。昔はVisual StudioでGUIでビルド設定してましたが、最近はもうmakeを使う方になれちゃったんだよね……。
cl.exeのコマンドラインスイッチ
スイッチ
|
<th>
意味
</th>
</tr>
<tr>
<th colspan="2">
最適化
</th>
</tr>
<tr>
<td>
/O1
</td>
<td>
コードを最小化
</td>
</tr>
<tr>
<td>
/O2
</td>
<td>
コードを最速化
</td>
</tr>
<tr>
<td>
/Ob{0|1|2}
</td>
<td>
インライン展開方法を指定
</td>
</tr>
<tr>
<td>
/Od
</td>
<td>
最適化を禁止
</td>
</tr>
<tr>
<td>
/Oi
</td>
<td>
組み込み関数を使用
</td>
</tr>
<tr>
<td>
/Ox
</td>
<td>
最大限の最適化
</td>
</tr>
<tr>
<td>
/GL
</td>
<td>
プログラム全体の最適化を使用
</td>
</tr>
<tr>
<td>
/arch:{SSE|SSE2}
</td>
<td>
SSE/SSE2を使用
</td>
</tr>
<tr>
<th colspan="2">
作成するコード
</th>
</tr>
<tr>
<td>
/MD
</td>
<td>
DLL版ランタイムライブラリを使用。/MDdとするとデバッグバージョンを作成
</td>
</tr>
<tr>
<td>
/MT
</td>
<td>
スタティック版ランタイムライブラリを使用。/MTdとするとデバッグバージョンを作成
</td>
</tr>
<tr>
<td>
/LD
</td>
<td>
DLLを作成。/LDdとするとデバッグバージョンを作成
</td>
</tr>
<tr>
<td>
/Fe<ファイル名>
</td>
<td>
出力するEXEファイル名を指定
</td>
</tr>
<tr>
<td>
/Fo<ファイル名>
</td>
<td>
objファイルを出力する
</td>
</tr>
<tr>
<td>
/Zi
</td>
<td>
デバッグ情報を生成
</td>
</tr>
<tr>
<th colspan="2">
そのほか
</th>
</tr>
<tr>
<td>
/D<シンボル>
</td>
<td>
シンボルを定義(#defineと同等)。値を指定する場合は/D<シンボル>=<値>とする
</td>
</tr>
<tr>
<td>
/I<パス>
</td>
<td>
追加インクルードディレクトリを指定
</td>
</tr>
<tr>
<td>
/X
</td>
<td>
標準インクルードパスを無視
</td>
</tr>
<tr>
<td>
/w
</td>
<td>
ワーニング出力を無効にする
</td>
</tr>
<tr>
<td>
/Wall
</td>
<td>
すべてのワーニング出力を有効にする
</td>
</tr>
<tr>
<td>
/link
</td>
<td>
リンカにオプションを渡す
</td>
</tr>
link.exeのコマンドラインスイッチ
スイッチ
|
<th>
意味
</th>
</tr>
<tr>
<td>
/DEBUG
</td>
<td>
デバッグ情報(PDBファイル)を作成
</td>
</tr>
<tr>
<td>
/DEF:<ファイル名>
</td>
<td>
モジュール定義ファイルを指定
</td>
</tr>
<tr>
<td>
/DLL
</td>
<td>
DLLを作成
</td>
</tr>
<tr>
<td>
/EXPORT:entryname[,@ordinal[,NONAME]][,DATA]
</td>
<td>
エクスポートする関数を指定
</td>
</tr>
<tr>
<td>
/LIBPATH:<パス>
</td>
<td>
追加のライブラリパスを指定
</td>
</tr>
<tr>
<td>
/LTCG
</td>
<td>
リンク時のコード生成を有効化。/GLを指定してコンパイルしたオブジェクトファイルのリンクに必要
</td>
</tr>