Version 15.20
「プロジェクトの設定」ダイアログ
「今回はDLLの締めとして、【プロジェクトの設定】ダイアログについて見
ていきます」
『結構使ったよねー』
「でしょう。今回はそのあたりも振り返りながら、ひとつひとつ見ていきま
す」
『はーい』
「まず基本的なところから。【プロジェクトの設定】ダイアログは、
メニューの【プロジェクト】-【設定】を選択すると表示されます」
『うん、表示された』
「ただ、他にも表示する方法があります」
『ツールバーとか?』
「ツールバーにはないと思う……【ワークスペース】の【FileView】を表示
して、その中のソースファイルとかを右クリックして【設定】を選ぶと」
『ホントに出た!!』
「なぜこれでも出るかというと、実は【プロジェクトの設定】と言いつつ、
各ファイルの設定も変えられるからなんです。【プロジェクトの設定】
ダイアログの左側を見て」
-BuildTest
+--Source Files
| |-Main.cpp
|--Header Files
|--Resource Files
『うん、こんな感じに表示されてる。エクスプローラーみたい』
「それぞれ選択すると、右側の表示が変わるでしょ」
『変わる! 【BuildTest】だといっぱい出るけど、【Source Files】や
【Main.cpp】だと【一般】と【C/C++】だけになる』
「メニューから表示させた時は【BuildTest】を選んだ状態で表示されます。
対して、【Main.cpp】の右クリックメニューから表示した時には、
【Main.cpp】が選択された状態で表示されます」
『メニューからだと全体で、ファイルからだとそのファイルだけ?』
「そういうこと。そして、それぞれの設定は、全体と個別のファイルを別々
に設定できます」
『同じ項目があっても、別々に保存されるってこと?』
「そういうこと。ファイル単位では別の設定がしたい時もあるから」
『なるほど。でも右側のタブが変わるのって?』
「必要のないタブがあるから。【Main.cpp】はソースファイルだから、
コンパイルの設定は各ファイル単位で必要だけど、リンクは」
『コンパイル後のオブジェクトファイルをくっつけるから、それぞれの
【Main.cpp】で設定しても意味ない……ってこと?』
「そういうこと。だから、【Main.cpp】は【一般】と【C/C++】だけってわ
け」
『なるほどねー』
「もうひとつ、左上の【設定の対象:】の右側について」
『【Win32 Debug】って書いてあるね。確かこれって、デバッグビルドとか
リリースビルドのなんだっけ』
「そうそう。 Version 3.24 ( No.049 ) とか Version 6.18 ( No.119 ) で
説明したね」
『デバッグ用とリリース用の2つの設定があるってだけで、大きな違いはな
いんだよね』
「そう。プロジェクトの設定は、プロジェクトを作った時に【Win32 Debug】
と【Win32 Release】が作られる、ってこと。それぞれ、デフォルトの設定が
デバッグ用とリリース用とで違うけど、設定の違いだけだから」
『同じに設定したり、逆にしたりもできるんだよね』
「そういうこと。それに……メニューの【ビルド】-【構成】を選んで」
『【構成】ダイアログが出た……【Win32 Debug】と【Win32 Release】があ
る!』
「これは【プロジェクトの設定】そのものを管理するためのもの。【追加】
ボタン押してみて」
『【プロジェクト構成の追加】ダイアログが表示された』
「このダイアログで、【Win32 Debug】や【Win32 Release】みたいなものを
新しく作ることができます」
『【設定のコピー】ってあるってことは、【Win32 Debug】とかのをそのま
ま使えるんだ』
「そうじゃないと設定が大変だからね。既存の【Win32 Debug】や
【Win32 Release】を大きく修正したい時に、その修正前のバックアップに
使ったりとか」
『あ、それいいかも! まだよく分かってないんだし』
「その他にも色々な設定を切り替えたりとか、様々なバージョンの DLL を
作る時とか」
『結構便利そう……』
「同じくメニューの【ビルド】-【アクティブな構成の設定】で、ビルドし
た時に選択される設定を決められるから」
『いろんな設定を試す時にはこれで変えてからビルドすればいいわけね』
「そういうこと。じゃ、話を戻して、【プロジェクトの設定】ダイアログの
右側について」
『各タブね』
「まず【一般】タブから。一般、というよりは特にカテゴリーのない設定を
するタブです」
『あぶれてる……』
「【Microsoft Foundation Class】はその名の通りMFCを使うかどうか。
【MFC を使用しない】は MFC を使わない場合、【MFC のスタティック
ライブラリを使用】と【共有 DLL で MFC を使用】は、 MFC の
スタティックリンクライブラリと DLL を使う設定」
『 MFC ってスタティックリンクライブラリも DLL もあるんだ』
「そう。 DLL の場合、 MFC42.dll という DLL を使用します」
『あれ? ってことは、その DLL がないと……』
「【共有 DLL で MFC を使用】を選んでビルドした Exe は使えません」
『げ、そうなんだ』
「でも、リリースされてからだいぶ経つから、 MFC42.dll がない、ってこ
とは考えなくていいと思うよ。たいがいのアプリケーションがインストール
してあるはずだから」
『インストールしてる?』
「ウィンドウズフォルダの System32 フォルダの中に置いてある、ってこ
と」
『あ、そういうことね。うん、あったあった』
「それでも心配だったり、バージョンの違いが気になるなら、スタティック
リンクライブラリの方がいいかも。結構ファイルサイズ増えるけど」
『 1M とか?』
「そんなに増えないから大丈夫。今の環境なら全然気にならないだろうから
スタティックリンクライブラリでも安定かもね」
『かもね』
「【出力ディレクトリ】は、ビルド時のファイルの出力先」
『ファイルって?』
「ビルドする時に作られるファイル。【中間ファイル】の方は
オブジェクトファイルのこと、【出力ファイル】の方は Exe や DLL 、
.pdb ファイルのこと」
『 .pdb ファイルってデバッグに使うヤツね』
「前回、 Version 15.19 ( No.319 ) で説明したね。こういった、他で使う
ファイルは【出力ファイル】の方。この設定を変えることで、今まで
Debug フォルダに出力していたのを変えることができます」
『なるほど、ここでフォルダの名前を決めてたんだ』
「最後の【構成ごとに依存関係の設定を許可】は、プロジェクトを複数使う
場合の話だからここではパス」
『プロジェクトを複数使う、って?』
「実は、複数のプロジェクトをまとめて、ひとつにして管理することができ
るんです」
『うわ、なんかややこしそう!』
「そうすると、たとえば Exe と DLL をまとめて管理できたりもします」
『うわ、便利そう!』
「……でも、やっぱり複雑になりやすいから、別々に作った方がいいと思う
よ」
『ホントにー?』
「う、うん……では次」
『あー』
「【デバッグ】タブ。まずはその【一般】ページ」
『デバッグ関係の設定ね』
「【デバッグセッションの実行可能ファイル】は、デバッグ実行する Exe 、
つまり今作ってる Exe ファイルのこと」
『これを実行するわけね』
「その下は各種設定。【作業用のディレクトリ】は、実行時の、いわゆる
【カレントディレクトリ】を設定するもの」
『カレントディレクトリって Version 14.26 ( No.293 ) で言ってた、
ファイルとか見る時のフォルダのことだよね』
「そう。たとえばファイルを読んだり書き込んだりする時に、フルパスを指
定しなければ、カレントディレクトリにあるファイルを読み込んだり書き込
んだりします」
『ファイル全般そうってこと?』
「そういうこと。デフォルトでは、プロジェクトのフォルダになります。
Version 5.09 ( No.074 ) で出てきた Data.txt をプロジェクトのフォルダ
に作っていたのも」
『カレントディレクトリがプロジェクトのフォルダだからなんだ』
「そういうこと。次の【プログラムの引数】は、 Exe を実行する時に渡す
引数」
『え? Exe って実行する時に……あ、そういえば渡せるよね、ツールとか
使う時に -d とか /d とか付けたことあるよ。それ?』
「そうそれ。たとえば」
// Main.cpp
#include <Windows.h>
#include "DLLTestHard.h"
#include "Func.h"
int WINAPI WinMain
( HINSTANCE p_hInstance
, HINSTANCE p_hPrevInstance
, LPSTR p_pchCmdLine
, int p_iCmdShow
)
{
Output( p_pchCmdLine );
// AAAAA
return 0;
}
「ってして、【プログラムの引数】に【AAAAA】って指定すれば、そのとお
り出力されます。このように、【プログラムの引数】に指定した文字列は
WinMain()関数の第3引数に渡されます」
『これを使って、色々設定するわけね』
「一番下の【リモートの実行可能ファイルのパスとファイル名】は、複数の
マシンでデバッグする方法」
『複数のマシン?』
「目の前のマシンじゃなく、他のマシンで実行された Exe をデバッグする
ことができるんです」
『うわ、それかっこよさそう!』
「まぁ滅多に使わない機能だからパス」
『まぁ、マシン2台必要だしね……』
「次のページ、【追加する DLL】は、 DLL をデバッグする時に DLL を指定
します」
『あれ? こんなの設定しなくてもデバッグできてたじゃん。あ! これ設
定すれば Exe と同じフォルダに DLL 置かなくてもいいとか?』
「ううん、それは駄目。 Exe が DLL を探す方法は決まってて、特別な方法
では指定できないから」
『じゃあなんなのこれ』
「わかんない」
『……』
/*
Preview Next Story!
*/
『わかんないって……』
「このへんの設定は難しい所多いんだよね」
『それでいいの!?』
「う”」
『……』
「というわけで次回」
< Version 15.21 「プロジェクトの設定」コンパイル編 >
『につづく!』
「断言する、 VC++ プログラマーで全ての設定を理解してる人はいない!」
『それで教えようっていうのー!?』