cl.exeを取ってIDEを置く

3196 ワード

筆者はここでcl.exeを使用してソースファイルをコンパイルする方法を紹介し、IDEに依存せずに手動でコンパイルプロセスを実行することができます.また、cl.exeを使用して簡単なソースコードをコンパイルする方法も紹介します.
cl.exeはwindowsプラットフォームの下のコンパイル接続プログラムで、ソースコードをオブジェクトファイル(*.obj)にコンパイルして接続し、実行可能ファイル(*.exeを自動的に生成する役割を果たします.もちろん、cl.exeには高度な機能がたくさんあります.コマンドラインに「cl.exe/?」を入力すると、詳細が表示されます.
筆者がwin 7(x 86)システムにインストールしたIDEはVS 2010で、デフォルトのインストール構成を採用し、インストール後のcl.exeのファイルパスは以下の通りである.
  
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin
 筆者はデスクトップでテキストエディタでhello.cファイルを編集し、その内容は「hello world!」を出力します.CMDで作業ディレクトリをデスクトップに切り替え、「cl.exe hello.c」と入力すると、実行時にエラーが発生します.これは、INCLUDE、LIB、PATHなど、cl.exeの実行が多くの環境変数に依存しているためです.詳細はファイルを参照してください.
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat

 vcvars 32.batはcl.exe実行のすべての条件を構成する環境プロファイルです.(筆者注:コードにサードパーティ製ライブラリ関数の呼び出しが含まれている場合は、環境プロファイルを変更する必要があります)
実際、VS 2010をインストールすると、スタートバーにbatファイルを呼び出す「visual stdioコマンドプロンプト(2010)」というプログラムが表示されます.
C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat

    このbatファイルの役割は、実際には、ユーザーのプラットフォームに基づいて異なる環境プロファイルを選択することです.
筆者は「visual stdioコマンドプロンプト(2010)」プログラムを使用して、作業ディレクトリをデスクトップに切り替え、「cl.exe hello.c」と入力すると、cl.exeが正常に実行され、オブジェクトファイルhello.objと実行可能ファイルhello.exeが生成されます.
筆者はMyComplier.batという名前のbatファイルを編集しました.その内容は次のとおりです.
start C:\"Program Files"\"Microsoft Visual Studio 10.0"\VC\vcvarsall.bat x86

       (筆者注:1,vcvarsall.batを呼び出す際のパラメータ「x 86」はユーザ機器に依存しており,具体的な詳細はvcvarsall.batを参照することができる;2,筆者の機器ではMyComplier.batも(絶対経路による)vcvars 32.batを呼び出すように書くことができる)
 MyComplier.batとソースコードが同じディレクトリにある場合、MyComplier.batを実行することでcl.exeの構成を完了し、cl.exeを使用してコンパイル接続プロセスを手動で実行することができます.これで、筆者はテキストエディタ+MyComplier.batの簡易IDEを実現しました.
C/CPPファイルを1つ実行するだけでは、vs 2010のようなヘビー級のIDEを起動する必要がなく、時間と労力を節約できます.もちろん、このようにするのも欠陥があり、DEBUGができません.また、大規模なプロジェクトに直面するのは不十分です.しかし、筆者は、この文章の意味は読者に軽量級のIDE解決を提供することにあると考えています.シナリオ.MyComplier.batファイルとソースコードを同じファイルに配置するだけで、batファイルを実行してcl.exeをスムーズに使用できます.この方法ほど簡潔なものはありませんか?
最後に、筆者はcl.exeを使った経験に基づいて、以下のいくつかの使い方を書いて、読者の参考にします.
a.上記のファイルhello.cの名前を「hello.txt」と変更した場合、コマンド「cl.exe hello.txt/TC」を使用してコンパイルに成功します.
b.この場合、ZooAnimal.hファイルにはクラスZooAnimalのメンバー関数が宣言され、ZooAnimal.cppではこれらのメンバー関数が実装され、3番目のファイルmain.cppで「#include“ZooAnimal.h”」でクラスZooAnimalが使用されます.「cl.exe main.cpp」を実行するとエラーが表示されます.この場合の解決策は2つあります.1つ目は、main.cppを「#include」に変更することです.ZooAnimal.cpp",2つ目は「cl.exe ZooAnimal.cpp」を先に実行し,問題のない「ZooAnimal.obj」と誤った「ZooAnimal.exe」(ZooAnimal.cppにmain関数がないため)を得た後,「cl.exe main.cpp/link ZooAnimal.obj」を実行するとコンパイルに成功する(linuxコンパイルに詳しい読者はこの方法をよく知っているはずである).
c、(bと同様)fun.hにいくつかの関数が宣言され、fun.cでこれらの関数が実現され、3番目のファイルmain.cppでは「#include“fun.h”」これらの関数を使用します.bの2段式のコンパイル方法を参照すると、まだエラーが発生します.これは、fun.cをコンパイルする場合、コンパイラはcのスタイルで関数を処理し、main.cppをコンパイルする場合、コンパイラはc++のスタイルで関数を処理し、コンパイラは自然に「 error LNK 209:解析できない外部記号」のため、fun.cをコンパイルする際にclの拡張オプション「/TP」を使用し、「cl.exe fun.c/TP」を実行してから「cl.exe main.cpp/link fun.obj」を実行すればコンパイルに成功します.
 
筆者はvs 2010のインストール後に対応するincludeファイル、libファイル、bin中のexeファイルなどの必須ファイルをコピーし、自分で移動可能なC/C++コンパイルプラットフォームを合成し、仮想win 7(IDEなし)でhello.cファイルのコンパイルに成功した.もちろん、ソースコードがmfc、windowsアプリケーションなどの高度なプログラミング方法を使用した場合の場合、状況は複雑になりますので、興味のある方はご自身で試してみてください.