2008-09-05 19 views
3

あなたが書いたアプリケーションのライブラリを使用したり配布したりすることは、すべての人の慣習には興味があります。デバッグビルドでライブラリを管理/使用するとビルドをリリースする

まず、アプリケーションの開発時に、ライブラリのデバッグ版またはリリース版をリンクしますか? (アプリケーションをデバッグモードで実行する場合)

次に、展開する直前にリリースモードでアプリケーションを実行すると、どのライブラリを使用していますか?

デバッグ版とリリース版のライブラリを切り替えるにはどうすればよいですか?手動でやっていますか、マクロを使用していますか、それ以外は何ですか?

答えて

3

私は、最初の要件は、ライブラリから必要とされているかを判断します:

  1. デバッグ/
  2. Unicodeサポートを解放し、その..にそれと

は、あなたがすることができます決定あなた自身または他の図書館ユーザーが必要とする各組み合わせの構成を作成します。

コンパイルとリンクを行うときは、ライブラリと実行可能ファイルが使用される構成に関して一貫性を保つことが重要です。つまり、リンク時にリリース&のデバッグを混在させないでください。 Windows/VSプラットフォームでは、デバッグ&リリースのlibが実行可能ファイル内で混在している場合、微妙なメモリの問題が発生する可能性があります。

BrianがVisual Studioに言及しているように、Configuration Managerを使用して、構築が必要な各設定をどのように設定するのが最適です。

例えば、私たちのプロジェクトでは、ビルドされている実行可能ファイルに応じて、以下の設定が必要です。

  1. デバッグ+ Unicodeの
  2. デバッグ+ ASCII
  3. リリース+ Unicodeの
  4. リリース+ ASCII、この特定のプロジェクトのユーザ

が付き、実行可能な要件に合致するようにConfiguration Managerを使用しますプロジェクトの利用可能な構成。

マクロの使用に関しては、関数のデバッグバージョンまたはリリースバージョンがリンクされるかどうかのように、コンパイル時の決定を実装する際に広く使用されます。 VSを使用している場合は、プリプロセッサの定義属性を表示して、さまざまなマクロがどのように定義されているかを確認できます。 _DEBUG _RELEASE、これはコンフィギュレーションが何をコンパイルするかを制御する方法です。

あなたのプロジェクトをコンパイル/リンクするためにどのプラットフォームを使用していますか?

編集:更新されたコメントを展開する

構成マネージャオプションが使用可能でない場合、Iプロジェクトから次のプロパティを使用することをお勧め:

  • リンカ - >追加のライブラリディレクトリまたはリンカ - >入力

マクロ適切なライブラリ構成にリンクするために、例えば。デバッグ/リリース。

$(ProjectDir)\..\third-party-prj\$(ConfigurationName)\third-party.lib 
  • ビルドイベントまたはカスタム前(または後)に依存プロジェクトから必要なライブラリファイル(複数可)のコピーを実行し

ステップ構成プロパティを構築するビルドに発生します。

xcopy $(ProjectDir)\..\third-party-prj\$(ConfigurationName)\third-party.dll $(IntDir) 

マクロ$(ProjectDir)は、現在のプロジェクトの位置に置換及び動作は、現在のプロジェクトに対して発生させるであろう。 現在選択されている構成(デフォルトはDebugまたはRelease)の代わりにマクロ$(ConfigurationName)が使用されます。これにより、現在どの構成が現在構築されているかによって正しい項目がコピーされます。

プロジェクト設定に通常の命名規則を使用すると、$(ConfigurationName)マクロを使用することができます。そうしないと、固定文字列を使用できます。

0

私はVSを使用します。私がやる方法は、プロジェクトの参考文献を必要とする図書館です。基本的には、プロジェクトの読み込み時に特定のライブラリを探すフォルダを指定するだけです。私は、私の図書館をプロジェクトの独立性や再利用可能なものとして発展させています。したがって、彼らはすべて自分のプロジェクトです。私は特定のプロジェクトに必要なライブラリのため、私は "3rdParty"または "libs"フォルダを私のsvnフォルダツリーの "src"フォルダと同じレベルに作成します。私はリリースされたライブラリのみを使用する傾向がありますが、未知の問題があり、デバッグに切り替えたい場合は、手動で "lib"フォルダ内のファイルのデバッグバージョンをコピーして、プロジェクトをリロードします。

私は、私のsvnツリーにデバッグ版とリリース版の両方を保持する必要があるかどうかは不明です。彼らは自分のプロジェクトなので、別のプロジェクトのsvnツリーにそれらを保持することは正しくありません。彼らはいつでも邪魔にならずに再建することができます。

そして、私はスイッチをもっと作る方法を見つけたかった...うーん...まあ基本的には自動ですが、それは私が本当に意味するものではありません。リリースとデバッグの間でファイルを手動で切り替えるのは正しいとは思わない。たぶん私はそれをまだ見つけられませんでしたが、私が望むのは次のようなオプションです: ライブラリ "stack.dll"の場合、 "...... \ 3rdParty \"のリリースと "... ... \ 3rdPartyD \ "と表示されます。

私には分かりません。何を指示してるんですか? 覚えているライブラリは外部プロジェクトです。ビルドされたファイルはまったく別の場所にあります。実際には、別のプロジェクトをチェックアウトしてビルドし、別のコピーが必要な場合はビルドされたライブラリをコピーする必要があるので、それを考えてください。どのようにそれを設定しますか?

関連する問題