VC++プロジェクトのプロパティについて説明します
プログラムをビルドするとき、参照するディレクトリおよびファイルの設定
ビルド時のバッチコマンド実行など
プログラムを作成するために覚えておくとべきことと
プログラム作成の効率を上げる方法を紹介します
よく使う設定は以下の通りです
・DebugモードとReleaseモード
・文字コードの設定
・追加のインクルードディレクトリ
・追加のライブラリディレクトリ
・追加の依存ファイル
・コード生成
・ビルド時コマンドライン
・プリプロセッサの定義
プロジェクトのプロパティを操作するにはメニュー欄から
「プロジェクト」→「プロパティ」を選びます
実行ファイルを作りに当たり、DebugモードとReleaseモードがあります。
Debugモードは主にプログラムのデバック(バグ消し)を行うためのモードです
Releaseモードは完成したアプリケーションを配布するためのモードです
DebugモードとReleaseモードを切り替えるには次の箇所で選択します
注意しないといけないのは
DebugモードとReleaseモード別々にプロパティの設定をする必要があります
文字コードの設定を行います
基本的に「Unicode」か「マルチバイト文字」の設定を行います
Windows APIの関数を使うときはUnicodeとマルチバイトとで使われる関数が違うため
Windows APIの文字列関係のコンパイルエラーとなった場合、この設定を変更することで回避できます
(個人的にはこの設定に依存しないようなプログラムを書いたほうが良いと思いますが・・・)
プロジェクトに使うインクルードファイルのディレクトリの設定を行います
これはたとえばa.hというヘッダーファイルが
別のincludeというディレクトリ(フォルダ)にあったとして
インクルードするときには
#include "include\\a.h"
としてやらなければならないのですが
このincludeフォルダに他にもヘッダーファイルがある場合
いちいちパスをたどって指定するのはめんどうです
そこでincludeディレクトリの場所を予めプロジェクトに覚えさせておけば
#include "a.h"
と書くことができます。
パスというのは「親\子」のように「\」で区切られ、階層状になっています ただし、プログラムや設定などでは「\」ではなく「\\」を使います というのは「\」はプログラム上や設定では特殊な文字として扱われるので 普通に\文字を表示するには\\と書く必要があるからです また、「\\」でなく「/」で区切ってあっても同じ意味です パスは2種類あり、相対パスと絶対パスがあります 絶対パスというのはドライブ直下から階層が全て書かれているものを指します
たとえば次のようなものです
これはパソコンを使っている人毎にフォルダやファイルの置き場とか異なりますし
長いのでプログラムや設定などで使うのは好ましくありません
そこで相対パスの指定方法を説明します
「.」は現在のディレクトリの絶対パスを指します 「..」は現在のディレクトリの1つ上のディレクトリの絶対パスを指します
ここでは、プロジェクトでのパスの設定のとき「.」を先頭に付けることで
プロジェクト(.vcproj)のあるディレクトリまでのパスを指します
プロジェクトのディレクトリ下にincludeディレクトリがある場合、次のように指定します
こちらはプロジェクトに使うライブラリファイル(.lib)ファイルのディレクトリを指定します
指定の仕方は追加のインクルードディレクトリと同じです
プロジェクトに使うライブラリファイル(.lib)ファイルを指定します
直接ライブラリファイルを指定します
プログラム冒頭で
#pragma comment(lib,"ライブラリファイル名.lib")
と書くのと同じことです
(個人的には#pragmaのがおすすめ)
アプリケーションの構成にかかわる重要な項目です
コード生成には次の4つがあります
・マルチスレッドデバック
・マルチスレッド
・マルチスレッドデバックDLL
・マルチスレッドDLL
基本的には
Debugモードではマルチスレッドデバック
Releaseモードではマルチスレッド
を使います
というのは
・マルチスレッドデバックDLL
・マルチスレッドDLL
で作成した実行ファイルは別のパソコンで起動するには
次のようにうまく起動できず
別にインストールするものが増えてしまうのです
(たとえば、VC++2005で作成した場合はVC++2005 再頒布可能パッケージが必要となります)
この2つに関してはさらに詳しくはDLLの項目で説明します
実行ファイルを配布するときにはReleaseモードでマルチスレッド
に設定した実行ファイルを作成するのを忘れないでください
ビルドイベント時(ビルドするとき)
・ビルド前
・リンク前
・ビルド後
の3種類でバッチコマンドを指定できます
たとえば、ビルド後のファイルを指定の箇所にコピーするコマンドをここに書いておけば
ビルドするたびにコマンドが実行され
ファイルを指定の箇所にコピーしてくれます
より詳細な使い方はバッチファイル作成の項目で説明します
プリプロセッサの定義を設定できます
これはプロジェクト全体で#defineされているのと同じ意味を持ちます
ちなみに_DEBUGという定義はDebugモード時にデフォルトで定義されています
なので_DEBUGを利用してデバック用のコードを切り分けたりによくつかわれます。