スポンサーリンク

一つのソリューションでexe,dll両方のプロジェクトを管理する時の設定

Visual C++ 2017でプロジェクトを作る際、exe本体の他にlib,dllのプロジェクトを作ることがある。

このとき、プロジェクト設定を例えば以下のようにしておくと、何かと便利である。オープンソース系のプロジェクトを日常的にコンパイルするならその慣例にならえば良いと思う。

また、pdbはデバッグ時にはあっていいがReleaseにはいらないので、Releaseビルドの時には出力されないようにする。

 

目的とするディレクトリ構成

NewSolution
   +--ExeProject //ソースコードが入る
   +--DllProject //ソースコードが入る
   +--Libs
         +--x64
              +--Release // lib,expが入る
              +--Debug   // lib,exp
   +--Builds
         +--x64
              +--Release //exe,dllが入る
              +--Debug //exe,dll,pdb が入る

 

作業1 Release時のpdbの出力をしないようにする

DLLProjectを右クリック

● → プロパティページ → リンカー → デバッグ →

  (構成をReleaseにしてから) デバッグ情報の生成 => 「いいえ」

pdb_notoutput

さらに、iobj,ipdbが出力される場合は、

● → プロパティページ → リンカー → 最適化 →

  (構成をReleaseにしてから) リンク時のコード生成 =>「既定」

ipdb_notoutput

 

作業2 libファイルの出力先を変更する

● → プロパティページ → リンカー → 詳細設定 → インポートライブラリ

  変更前 : $(OutDir)$(TargetName).lib

  変更後 : $(SolutionDir)Libs\$(Platform)\$(Configuration)\$(TargetName).lib

  これで、NewSolution\Libs\x64\Release\ にlibとexpが出力されるようになる。

importlibpos

 

作業3 libファイルの参照先を変更する

最後に、libをリンクしたいexeのプロジェクトで、上記libファイル出力先を参照先に指定する

● → プロパティページ → リンカー → 全般 → 追加のライブラリディレクトリ

  追記 : $(SolutionDir)Libs\$(Platform)\$(Configuration)

libpos

 

作業4 exe,dllファイルの出力先を変更する

exe側、dll側同様に、

● → プロパティページ → 全般 → 出力ディレクトリ

変更前 : $(SolutionDir)$(Platform)\$(Configuration)\

変更後 : $(SolutionDir)Builds\$(Platform)\$(Configuration)\

slnsetting_

 

プロパティのマクロについて

詳しくは以下を参照:

https://msdn.microsoft.com/ja-jp/library/c02as0cs.aspx

今回使用したのは、

$(SolutionDir) slnファイルのあるディレクトリへのパスが入る。最後に’¥’がつく
$(Platform) x64,win32などが入る。最後に’¥’はつかない。→ slnsetting_platform
$(Configuration) Release,Debugなどが入る。最後に’¥’はつかない。→ slnsetting_config

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: