まず、ライブラリから必要な要件を特定します。
- デバッグ/リリース
- ユニコードのサポート
- 等々..
それを決定したら、自分自身または他のライブラリ ユーザーが必要とする各組み合わせの構成を作成できます。
コンパイルとリンクを行うときは、使用する構成に関してライブラリと実行可能ファイルの一貫性を保つことが非常に重要です。つまり、リンク時にリリースとデバッグを混在させないでください。Windows/VS プラットフォームでは、実行可能ファイル内にデバッグ ライブラリとリリース ライブラリが混在している場合、微妙なメモリの問題が発生する可能性があります。
Brian が Visual Studio に言及したように、構成マネージャーを使用して、必要な各構成を構築する方法をセットアップするのが最善です。
たとえば、私たちのプロジェクトでは、ビルドされる実行可能ファイルに応じて、次の構成が利用可能である必要があります。
- デバッグ + ユニコード
- デバッグ+アスキー
- リリース + ユニコード
- リリース+アスキー
この特定のプロジェクトのユーザーは、構成マネージャーを使用して、実行可能な要件をプロジェクトの利用可能な構成と一致させます。
マクロの使用に関しては、関数のデバッグ バージョンまたはリリース バージョンをリンクするかどうかなどの要件について、コンパイル時の決定を実装する際にマクロが広く使用されます。VS を使用している場合は、プリプロセッサ定義属性を表示して、_DEBUG _RELEASE などのさまざまなマクロがどのように定義されているかを確認できます。これは、構成がコンパイルされたものを制御する方法です。
プロジェクトのコンパイル/リンクに使用しているプラットフォームは何ですか?
編集:更新されたコメントを拡張します..
構成マネージャーオプションが利用できない場合は、プロジェクトの次のプロパティを使用することをお勧めします。
- リンカー->追加のライブラリ ディレクトリまたはリンカー->入力
マクロ$(ConfigurationName)
を使用して、Debug/Release などの適切なライブラリ構成とリンクします。
$(ProjectDir)\..\third-party-prj\$(ConfigurationName)\third-party.lib
- ビルド イベントまたはカスタム ビルド ステップの構成プロパティ
ビルドが発生する前 (または後) に、依存プロジェクトから必要なライブラリ ファイルのコピーを実行します。
xcopy $(ProjectDir)\..\third-party-prj\$(ConfigurationName)\third-party.dll $(IntDir)
マクロ$(ProjectDir)
は現在のプロジェクトの場所に置き換えられ、現在のプロジェクトを基準にして操作が行われます。マクロ$(ConfigurationName)
は、現在選択されている構成 (デフォルトはDebug
またはRelease
) に置き換えられます。これにより、現在構築されている構成に応じて、正しいアイテムをコピーできます。
プロジェクト構成に通常の命名規則を使用すると、$(ConfigurationName)
マクロを使用できるので役立ちます。それ以外の場合は、単に固定文字列を使用できます。