none
cl.exe (Visual C++ コンパイラ) の現状バージョンの確認方法(32bitと64bitの併用) RRS feed

  • 質問

  • 現在、Windows 7 64bit版、Visual Studio 2010にてVC++のアプリケーションを開発しています。

    このマシンで32bitアプリケーションと64bitアプリケーションの同時メンテナンスを行う必要があります。

    これから64bit化を行うのですが、下記リンクにて、cl.exe (Visual C++ コンパイラ)をx64 on x64に変更する必要があるようです。

    http://msdn.microsoft.com/ja-jp/library/x4d2c09s.aspx

    しかし、32bit版のメンテナンスも引き続き行う必要があるため、現在の cl.exe (Visual C++ コンパイラ)のバージョンを確認しておきたいです。

    現在の cl.exe (Visual C++ コンパイラ)のバージョンはどのようにして行えばよいのでしょうか?

    2012年12月17日 8:24

回答

  • 32bitアプリを作成する場合でもvcvarsall は実行したりしませんよね?それと同じで、64bitアプリを作るからといって設定を行ったりする必要はありません。

    >プロジェクトファイルが別

    ここが違います。

    プラットフォームを追加する場合(リンク先の手段がこの形です)、同じプロジェクトファイルで「32bitと64bitの両方のプログラムが作成、出力可能」になります。

    危惧しているのは、同じプロジェクトであることをうっかり忘れて。。。という部分です(実際によくあるパターンですし、私自身がそういう経験をしているので)。

    ほとんどの状況で32/64でコードを変えなければならないという部分はありませんが、ごくまれにそういう部分も出てきます。そういう場合はどうするか?なども同一プロジェクトの場合のみ考慮しなければならない部分に該当します(この手のものは#ifdef などで区切ることが多いですが)。

    常に意識しておく必要のあるものではありませんが、全く意識しなくてもいいというものでもありません。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/

    • 回答としてマーク erina777 2012年12月18日 3:27
    2012年12月17日 11:54
  • >完全に別フォルダ、別ファイルのプロジェクトファイル

    であれば、別物として、用意することは可能です。でも、別途コピーを作成して。。。とは書いてませんでしたよね?

    ただし、VSに統合されたソース管理ツール(最近はSVNやGitも統合可能になってきています)を利用している場合、.vcxprojや.slnファイル内にソース管理ツールへの接続情報などが埋め込まれています。その場合は単純にコピーしても、別プロジェクトとはなりませんので注意が必要です。使ってるかどうかはわかりませんが。。。

    ま、それはともかくとして...

    64bitアプリの作成環境の用意は、構成を追加する形で設定します。

    そのため、少なくとも追加直後の段階では32/64の両方が作成可能な状態になっています。

    そのあとどうするか?については、設定の追加とは関係のない別の問題です。

    あくまでも追加したままの状態を想定して書いています。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/

    • 回答としてマーク erina777 2013年1月7日 2:48
    2012年12月18日 1:33

すべての返信

  • 提示のリンクは、「コマンドプロンプト」上で、cl.exeを呼び出すときのパス設定(パス環境変数)に関するものです。

    Visual Studio 上でプロジェクトを用意し、それを使ってビルドする場合とは異なります。

    VS2010であれば、http://msdn.microsoft.com/ja-jp/library/9yb4317s(VS.100).aspx が参考になると思います。

    ちなみに、プロジェクトの構成(Debug/Releaseと同様の設定変更)にパターンを追加となりますので、メンテナンスは常に同時となります。

    x86のみあるいはx64のみというメンテナンスではありませんのでそのあたりは多少なりとも意識しておく必要があります。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/

    2012年12月17日 9:10
  • 返信ありがとうございます。

    上記のリンク(http://msdn.microsoft.com/ja-jp/library/9yb4317s(VS.100).aspx )をチェックしました。

    Visual Studio 2010を使用する場合は、プロジェクトのプロパティ ページにて設定するのみで、

    vcvarsall.batからx64を指定するようなことはしなくてもよいのでしょうか?


    また、

    >>x86のみあるいはx64のみというメンテナンスではありませんのでそのあたりは多少なりとも意識しておく必要があります。

    この記述がよく理解できなかったのですが、危惧している点はなんでしょうか。

    ちなみに、私の環境では、

    ○64bit環境で稼動する32bitアプリのプロジェクト

    ○64bit環境で稼動する64bitアプリのプロジェクト

    を平行メンテナンスする予定です。私の理解では、プロジェクトファイルが別であれば、並存可能であると思っています。

    • 編集済み erina777 2012年12月17日 9:40
    2012年12月17日 9:38
  • 32bitアプリを作成する場合でもvcvarsall は実行したりしませんよね?それと同じで、64bitアプリを作るからといって設定を行ったりする必要はありません。

    >プロジェクトファイルが別

    ここが違います。

    プラットフォームを追加する場合(リンク先の手段がこの形です)、同じプロジェクトファイルで「32bitと64bitの両方のプログラムが作成、出力可能」になります。

    危惧しているのは、同じプロジェクトであることをうっかり忘れて。。。という部分です(実際によくあるパターンですし、私自身がそういう経験をしているので)。

    ほとんどの状況で32/64でコードを変えなければならないという部分はありませんが、ごくまれにそういう部分も出てきます。そういう場合はどうするか?なども同一プロジェクトの場合のみ考慮しなければならない部分に該当します(この手のものは#ifdef などで区切ることが多いですが)。

    常に意識しておく必要のあるものではありませんが、全く意識しなくてもいいというものでもありません。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/

    • 回答としてマーク erina777 2012年12月18日 3:27
    2012年12月17日 11:54
  • 返信ありがとうございます。

    >>プラットフォームを追加する場合(リンク先の手段がこの形です)、同じプロジェクトファイルで「32bitと64bitの両方のプログラムが作成、出力可能」になります。

    私の管理するプロジェクトの場合、完全に別フォルダ、別ファイルのプロジェクトファイル(.vcxproj)にて32bitアプリ、64bitアプリを分けようと思っているのですが、その場合でも設定が共通化されるのでしょうか?

    (私が管理するアプリは、複数バージョンあり、新規のバージョンのみ64bitアプリとする予定です。)

    2012年12月18日 0:15
  • >完全に別フォルダ、別ファイルのプロジェクトファイル

    であれば、別物として、用意することは可能です。でも、別途コピーを作成して。。。とは書いてませんでしたよね?

    ただし、VSに統合されたソース管理ツール(最近はSVNやGitも統合可能になってきています)を利用している場合、.vcxprojや.slnファイル内にソース管理ツールへの接続情報などが埋め込まれています。その場合は単純にコピーしても、別プロジェクトとはなりませんので注意が必要です。使ってるかどうかはわかりませんが。。。

    ま、それはともかくとして...

    64bitアプリの作成環境の用意は、構成を追加する形で設定します。

    そのため、少なくとも追加直後の段階では32/64の両方が作成可能な状態になっています。

    そのあとどうするか?については、設定の追加とは関係のない別の問題です。

    あくまでも追加したままの状態を想定して書いています。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/

    • 回答としてマーク erina777 2013年1月7日 2:48
    2012年12月18日 1:33
  • 具体的に64bitの構成を作成してみて、徐々にとっちゃんさんのおっしゃっていることがわかってきたところです。。。

    別途プロジェクトをコピーして作成していますが、32bit構成も念のため残しておくことになると思います。その際はifdefなどでコーディングも必要になってくることになるかもしれないです。

    おそらくVSに統合されたソース管理ツールは使用していないので、単純コピーでいけると思います。

    ご教授ありがとうございました。

    2013年1月7日 2:53