3

あなたが書いたアプリケーションのライブラリを使用または配布することに関して、私は皆の慣行に興味があります。

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

次に、デプロイの直前にアプリをリリース モードで実行する場合、ライブラリのどのビルドを使用しますか?

ライブラリのデバッグ バージョンとリリース バージョンを切り替えるにはどうすればよいですか? 手動で行いますか、マクロを使用しますか、それとも他に何をしますか?

4

2 に答える 2

3

まず、ライブラリから必要な要件を特定します。

  1. デバッグ/リリース
  2. ユニコードのサポート
  3. 等々..

それを決定したら、自分自身または他のライブラリ ユーザーが必要とする各組み合わせの構成を作成できます。

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

Brian が Visual Studio に言及したように、構成マネージャーを使用して、必要な各構成を構築する方法をセットアップするのが最善です。

たとえば、私たちのプロジェクトでは、ビルドされる実行可能ファイルに応じて、次の構成が利用可能である必要があります。

  1. デバッグ + ユニコード
  2. デバッグ+アスキー
  3. リリース + ユニコード
  4. リリース+アスキー

この特定のプロジェクトのユーザーは、構成マネージャーを使用して、実行可能な要件をプロジェクトの利用可能な構成と一致させます。

マクロの使用に関しては、関数のデバッグ バージョンまたはリリース バージョンをリンクするかどうかなどの要件について、コンパイル時の決定を実装する際にマクロが広く使用されます。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)マクロを使用できるので役立ちます。それ以外の場合は、単に固定文字列を使用できます。

于 2008-09-05T15:57:15.647 に答える
0

私はVSを使用しています。私がそれを行う方法は、プロジェクトの参照を通じて必要なライブラリです。これは基本的に、プロジェクトの読み込み時に特定のライブラリを探すフォルダーを指定するだけです。私は自分のライブラリをプロジェクトに依存しない、または可能な限り再利用できるように開発しています。したがって、それらはすべて独自のプロジェクトです。そのため、特定のプロジェクトに必要なライブラリのうち、svn フォルダー ツリーの「src」フォルダーと同じレベルに「3rdParty」または「libs」フォルダーを作成します。私はリリースされたライブラリのみを使用する傾向がありますが、不明な問題が発生してデバッグに切り替えたい場合は、"lib" フォルダー内のファイルのデバッグ バージョンを手動でコピーし、プロジェクトをリロードします。

デバッグ バージョンとリリース バージョンの両方を svn ツリーに保持する必要があるかどうかはわかりません。ただし、それらは独自のプロジェクトであるため、別のプロジェクトの svn ツリーに保持することは適切ではありません。いつでも問題なく再構築できます。

そして、私はスイッチをもっと作る方法を見つけたいと思っていました...うーん...まあ、基本的には自動ですが、それは私が本当に言いたいことではありません. リリース済みとデバッグの間でファイルを手動で切り替えるのは正しくないと感じています。まだ見つかっていないかもしれませんが、次のようなオプションが欲しいと思います。 ..\3rdPartyD\" デバッグ用。

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

于 2008-09-09T12:22:46.847 に答える