Visual C++ 2010 Expressを使用して開発をしているのですが、
ビルドすると、通常はプロジェクト名と同じ実行ファイルが作成されると思います。
現在作成しているものの中で、
と、この様にデバッグ機能を入れていて、
デバッグ機能を外したい場合は「#define DEBUG」をコメントアウトしています。
ここで、普通にビルドした時は「○○.exe」と言う名称の実行ファイルが作られるところを、
デバッグ機能を入れている(「#define DEBUG」をコメントアウトしていない)実行ファイルをビルドする時は、
例えば「○○_debug.exe」と言う様に、自動で実行ファイル名を変えて作成させることは可能なのでしょうか。
以上、よろしくお願いします。
実行ファイル名を変更したいです
Re: 実行ファイル名を変更したいです
DEBUGではなく_DEBUGを使用してください。
こうすると、手動でデバッグ機能を切り替えなくても構成設定を変更すると自動的に切り替わります。
(#defineを使って手動で切り替えている状態では実行ファイル名を自動で変えることができません)
次にデバッグ時に出力ファイル名を変える方法ですが、
プロジェクトのプロパティシートを開いて構成が「Debug」になっていることを確認し、
全般 -> ターゲット名 が $(ProjectName) になっているところを $(ProjectName)_debug に変更します。
こうすると、手動でデバッグ機能を切り替えなくても構成設定を変更すると自動的に切り替わります。
(#defineを使って手動で切り替えている状態では実行ファイル名を自動で変えることができません)
次にデバッグ時に出力ファイル名を変える方法ですが、
プロジェクトのプロパティシートを開いて構成が「Debug」になっていることを確認し、
全般 -> ターゲット名 が $(ProjectName) になっているところを $(ProjectName)_debug に変更します。
Re: 実行ファイル名を変更したいです
Visual C++にすでに「_DEBUG」と言うものが用意されていたことは初めて知りました。
ありがとうございます。
「Debug」の構成でビルドした実行ファイル名を変更する方法を教えて頂きましたが、
出きれば「Releace」でビルドした実行ファイル名を変更する方法が知りたいです。
そもそも何故このような事をしたいのかと申しますと、
現在作成しているプログラムを、他の方々に頼んでテストしてもらっています。
その際に「Releace」でビルドした2つの実行ファイルを渡しています。
1つはデバッグ機能を持っているもので、もう1つはデバッグ機能無しのものです。
「Debug」でビルドした実行ファイルは「Visual C++」のデバッグ機能が使える様にする為のものが仕込まれていて、
その理由から「Releace」でビルドしたものよりも、処理速度重い実行ファイルになっていると聞きました。
このテストの中には、負荷テストやエージングテストの様なものもありまして、
出来るだけ「Releace」でビルドした実行ファイルでテストしたいと思っています。
今まで、2つの実行ファイルを渡していた時に、
こちらのミスでデバッグ機能が入っていない実行ファイルの名前を「○○_debug.exe」とリネームして渡してしまったことがありまして、
テストをして下さる方々を混乱させてしまった経験から、
ヒューマンエラーを無くす為に自動で名前別け出きる方法が知りたかったと言うものでした。
以上から、もし「Releace」でビルドした実行ファイル名を自動で変更できる方法があればご教授頂きたいです。
よろしくお願いします。
ありがとうございます。
「Debug」の構成でビルドした実行ファイル名を変更する方法を教えて頂きましたが、
出きれば「Releace」でビルドした実行ファイル名を変更する方法が知りたいです。
そもそも何故このような事をしたいのかと申しますと、
現在作成しているプログラムを、他の方々に頼んでテストしてもらっています。
その際に「Releace」でビルドした2つの実行ファイルを渡しています。
1つはデバッグ機能を持っているもので、もう1つはデバッグ機能無しのものです。
「Debug」でビルドした実行ファイルは「Visual C++」のデバッグ機能が使える様にする為のものが仕込まれていて、
その理由から「Releace」でビルドしたものよりも、処理速度重い実行ファイルになっていると聞きました。
このテストの中には、負荷テストやエージングテストの様なものもありまして、
出来るだけ「Releace」でビルドした実行ファイルでテストしたいと思っています。
今まで、2つの実行ファイルを渡していた時に、
こちらのミスでデバッグ機能が入っていない実行ファイルの名前を「○○_debug.exe」とリネームして渡してしまったことがありまして、
テストをして下さる方々を混乱させてしまった経験から、
ヒューマンエラーを無くす為に自動で名前別け出きる方法が知りたかったと言うものでした。
以上から、もし「Releace」でビルドした実行ファイル名を自動で変更できる方法があればご教授頂きたいです。
よろしくお願いします。
Boogaloo is funk feelin'.
Re: 実行ファイル名を変更したいです
個人的には,_DEBUGよりもNDEBUGによる判定をお薦めします。
# 前者はMS-specificだが,後者はassertで調べるときのマクロ。Releaseビルド時にデフォルトで定義される設定になっている。
で,複数のビルドが必要ならば,構成を分ければ良いです。
また,上記手順ではRelease - NoPdbでのみNOPDBを定義したので,#if defined(NDEBUG) && !defined(NOPDB)のような形で区別も可能です。
# 複数の構成を一気にビルドする場合は,バッチビルドを利用するのが楽でしょう。
# 前者はMS-specificだが,後者はassertで調べるときのマクロ。Releaseビルド時にデフォルトで定義される設定になっている。
で,複数のビルドが必要ならば,構成を分ければ良いです。
- プロジェクトのプロパティを開く
- プロジェクトのプロパティの上部にある[構成マネージャー]ボタンを押して[構成マネージャー]ダイアログを表示させる
- [アクティブ ソリューション構成]ドロップダウンから[<新規作成>]を選択し,[新しいソリューション構成]ダイアログを表示させる
- [名前]は分かり易い名前 (Release - NoPdb等) をつけ,[設定のコピー元]ドロップダウンから[Release]を選択する
- [新しいプロジェクト構成を作成する]はチェックしておく
- [OK]ボタンを押して[新しいソリューション構成]ダイアログを閉じる
- [OK]ボタンを押して[構成マネージャー]ダイアログを閉じる
- [構成]ドロップダウンから[Release]を選択する
- [構成プロパティ] - [リンカー] - [全般]の[出力ファイル]を設定する
- [構成]ドロップダウンから[Release - NoPdb]等の作成した構成を選択する
- [構成プロパティ] - [C/C++] - [プリプロセッサ]の[プリプロセッサの定義]に「NOPDB」等を追加する。
- [構成プロパティ] - [リンカー] - [全般]の[出力ファイル]を設定する
- [構成プロパティ] - [リンカー] - [デバッグ]の[デバッグ情報の生成]等を修正する
- [OK]ボタンを押してプロジェクトのプロパティを閉じる
また,上記手順ではRelease - NoPdbでのみNOPDBを定義したので,#if defined(NDEBUG) && !defined(NOPDB)のような形で区別も可能です。
# 複数の構成を一気にビルドする場合は,バッチビルドを利用するのが楽でしょう。
Re: 実行ファイル名を変更したいです
四苦八苦しながらも何とか目的の事が出来ました。
ありがとうございました。
ひとつだけ気がかりがあったのですが、
>[構成プロパティ] - [リンカー] - [全般]の[出力ファイル]を設定する
上記の方法でビルドすると、ビルド中に警告が発生しました。
警告の内容を調べてみたら「プロジェクトの出力マクロとリンカの出力が一致しないと警告される」という様なものでした。
この警告が出ても特に問題はなさそうなのですが、
個人的にすっきりしなかったので、
警告を出さない方法を模索したところ、
リンクの出力を標準の、
[構成プロパティ] - [全般]の[ターゲット名]の方を変更すると警告は発生しませんでした。
以上、アドバイスしてくださった方々、誠にありがとうございました。
ありがとうございました。
ひとつだけ気がかりがあったのですが、
>[構成プロパティ] - [リンカー] - [全般]の[出力ファイル]を設定する
上記の方法でビルドすると、ビルド中に警告が発生しました。
警告の内容を調べてみたら「プロジェクトの出力マクロとリンカの出力が一致しないと警告される」という様なものでした。
この警告が出ても特に問題はなさそうなのですが、
個人的にすっきりしなかったので、
警告を出さない方法を模索したところ、
リンクの出力を標準の、
[構成プロパティ] - [全般]の[ターゲット名]の方を変更すると警告は発生しませんでした。
以上、アドバイスしてくださった方々、誠にありがとうございました。
Boogaloo is funk feelin'.