cl.exeの主要コマンドラインオプションメモ

 最近、Visual C++をいじっているのでメモ。昔はVisual StudioでGUIでビルド設定してましたが、最近はもうmakeを使う方になれちゃったんだよね……。

  <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>
cl.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[&#44;@ordinal[&#44;NONAME]][&#44;DATA]
  </td>
  
  <td>
    エクスポートする関数を指定
  </td>
</tr>

<tr>
  <td>
    /LIBPATH:<パス>
  </td>
  
  <td>
    追加のライブラリパスを指定
  </td>
</tr>

<tr>
  <td>
    /LTCG
  </td>
  
  <td>
    リンク時のコード生成を有効化。/GLを指定してコンパイルしたオブジェクトファイルのリンクに必要
  </td>
</tr>
link.exeのコマンドラインスイッチ
スイッチ