VS関連コンパイルコマンド
2455 ワード
作業ではコマンドラインでwindowsでCプログラムをコンパイルすることが多いが、MinGW(tdm 64-gcc)でも使いやすいが、Visual Studioでコンパイルされた静的ライブラリ*.libファイルに対してはgcc呼び出しが面倒であるため、ここではVisual Studioのコマンドラインツール、すなわちVisual Studio 2017生成ツール(ダウンロードアドレス)について検討した.ダウンロード後、直接インストールすることも、オフラインインストールパッケージをエクスポートしてオフラインインストールすることもできます.vs_buildtools.exe--layout E:downloadvsコマンドオフラインインストールパッケージをエクスポートします.サイズは10 Gです.具体的にはマイクロソフトの公式ドキュメントを参照してください.ここではよく使われる機能を例に挙げます.
環境構成のコンパイル
関連環境設定スクリプトはインストールパスVCAuxiliaryBuildにあります.
コンパイラCL.exe
CL.exeは成功(エラーなし)でゼロを返します.それ以外の場合はゼロ以外の値を返します.リンクHelloWorld.cをコンパイルし、デフォルトのユーザーディレクトリでHelloWorld.objとHelloWorld.exeを生成します.
コンパイルのみリンクせずにHelloWorld.objをデフォルトのユーザーディレクトリに出力
いくつかの重要なコンパイラオプション
リンクLINK.exe
リンクHelloWorld.objはHelloWorld.exeをデフォルトディレクトリに生成します
リンクHelloWorld.obj対応ディレクトリへのHelloWorld.exeの生成
ライブラリマネージャLIB.exe
LIB.exeは主に.*.lib静的ライブラリを生成するために使用されます.HelloWorldLib.cをHelloWorldLib.libにコンパイルするには、2つのステップに分ける必要があります.最初のステップはHelloWorldLib.obj にコンパイルされた.第2ステップHelloWorldLib.lib を生成
リンク中に静的ライブラリをリンクする
環境構成のコンパイル
関連環境設定スクリプトはインストールパスVCAuxiliaryBuildにあります.
vcvars32.bat 32 x86 32 x86 ;
vcvars64.bat 64 x64 64 x64 ;
vcvarsx86_amd64.bat 32 x86 64 x64 ;
vcvarsamd64_x86.bat 64 x64 32 x86 ;
コンパイラCL.exe
CL.exeは成功(エラーなし)でゼロを返します.それ以外の場合はゼロ以外の値を返します.リンクHelloWorld.cをコンパイルし、デフォルトのユーザーディレクトリでHelloWorld.objとHelloWorld.exeを生成します.
CL E:\code\c_code\HelloWorld.c
コンパイルのみリンクせずにHelloWorld.objをデフォルトのユーザーディレクトリに出力
CL /c E:\code\c_code\HelloWorld.c
いくつかの重要なコンパイラオプション
/D #define TEST, /D TEST , :, /DTEST=1
CL /DTEST E:\code\c_code\HelloWorld.c
/E stdout
CL /E E:\code\c_code\HelloWorld.c
/P HelloWorld .i
CL /P E:\code\c_code\HelloWorld.c
/Fi , /Fi ,
CL /P E:\code\c_code\HelloWorld.c /FiE:\code\c_code\HelloWorld.i
/Fo obj , /Fo ,
CL /c E:\code\c_code\HelloWorld.c /FoE:\code\c_code\HelloWorld.obj
/Fo obj , /Fe exe
CL E:\code\c_code\HelloWorld.c /FeE:\code\c_code\HelloWorld.exe
/I
/O1 1
/O2 2 , , O3
/Od
リンクLINK.exe
リンクHelloWorld.objはHelloWorld.exeをデフォルトディレクトリに生成します
LINK E:\code\c_code\HelloWorld.obj
リンクHelloWorld.obj対応ディレクトリへのHelloWorld.exeの生成
LINK E:\code\c_code\HelloWorld.obj /out:E:\code\c_code\HelloWorld.exe
ライブラリマネージャLIB.exe
LIB.exeは主に.*.lib静的ライブラリを生成するために使用されます.HelloWorldLib.cをHelloWorldLib.libにコンパイルするには、2つのステップに分ける必要があります.
CL /c E:\code\c_code\HelloWorldLib.c /Fo: E:\code\c_code\HelloWorldLib.obj
LIB E:\code\c_code\HelloWorldLib.obj /out:E:\code\c_code\HelloWorldLib.lib
リンク中に静的ライブラリをリンクする
LINK E:\code\c_code\HelloWorld.obj E:\code\c_code\HelloWorldLib.lib /out:E:\code\c_code\Hello.exe