背景
C++で単一の実行ファイルを作っている状況であれば、後からファイル名を変更すればいいだけだと思います。ところが、DLLなどを作る場合、debugとreleaseでファイル名を変えたい、なんてことがあると思います。その方法を調べて試したりしたらエラーが出たりしたので、想定する状況によって適切な方法が違うのでしょう。ここでは、モジュール定義ファイル(*.def)を指定してDLLを作る状況で、これを実現する設定について書き残しておきます。
設定
あちこちいじる設定もあるようですが、ここではシンプルに一箇所いじります。プロジェクトの「構成プロパティ」のの「全般」のところに、ターゲット名の項目があります。デフォルトでは、ここは「$(ProjectName)」となっておりますが、debug設定のときのみ、この名前を少し修飾することで、releaseのファイルと名前が被らないようにすることができます。
さて、これだけで上手く行く場合もありますが、モジュール定義ファイル(DEFファイル)を使う状況(DLLでextern “C”を使わずに明示的にリンクする場合など)だと、このDEFファイルをdebug/releaseを切り替える度に編集しなければなりません。編集し忘れると、warning LNK4070などが出て、ディレクティブは無視されます、などと言われます。Debug用のDEFファイルをプロジェクトに追加しようとしても、一つしか追加できません、と蹴られます。このDEFファイルですが、厳密に管理されているわけではなく、どうやら単なるテキストファイルのようです。つまり、リソースファイルの項目として名前を変えて複数個加え、それぞれdebugとreleaseの構成で別々のDEFファイルを指定することで、無事に目的を達成できました。
コメント