2011-01-17 12 views
1

Visual Studioでコンパイルできる多くのオープンソースライブラリがあります。私はLinuxからWindowsへプログラムを移植していますが、いくつかのライブラリに依存しています。私はライブラリに関するベストプラクティスがWindows上に何であるか分かりません。オープンソースライブラリをWindowsでどのように使うべきですか?

Linuxでは、これらのライブラリは通常、配布の一部です。たとえば、sqliteをDebianで使用するには、libsqlite3-devをインストールするだけで、インクルードファイルとライブラリ(静的と動的の両方)が自動的にインストールされ、プログラムで利用できるようになります。

あなたのディストリビューションの供給とは異なるバージョンを必要とする場合は、あなたのホームディレクトリにそれをコンパイル~/include~/libにそれをインストールし、あなたのコンパイラがその検索パスにこれらのディレクトリが含まれるように、適切なenvironment variablesを設定することができます。

Windowsでソースとして配布されているライブラリを使用する最良の方法は何ですか?静的にではなく動的にリンクする場合、必要なDLLを出力ディレクトリにコピーして再配布を容易にする簡単な方法はありますか(ライセンス要件が満たされていると仮定します)。

答えて

1

オプション1 - Windows用のバイナリディストリビューションを持つプロジェクト/ DevStudioではビルドしません。

など。 OpenSSL。

OpenSSLのようなプロジェクトは、独自のフォルダにダウンロードして、独自のスクリプトを使用して構築するのが最適です。 OpenSSLは通常、WindowsビルドでC:\ OpenSSLにインストールされるため、C:\ OpenSSL \ includeとC:\ OpenSSL \ libをプロジェクト環境に追加してOpenSSLヘッダーとLibにアクセスできます。実際のdllファイルは、C:\ OpenSSL \ binからプロジェクトステージングフォルダ(通常はSolutionDir \ DebugまたはRelease)にコピーする必要があります。

OpenSSLを構築するという面倒を一度やり終えたら、もう一度やり直したくないです。バイナリディストリビューションをダウンロードした場合は、そのままにしておくことをお勧めします。あなたが使用したバイナリ配布を他の人に伝えるだけで、Visual Studioビルド環境を適切に設定することができます。

オプション2 - Visual Studioプロジェクトを簡単に作成できる(または既に所有している)小さなライブラリです。 Luaとsqlliteはこのカテゴリに分類されます。 十分に小さいプロジェクトの場合、サブフォルダ内のソリューションに単純に追加することは不便ではありません。この方法では、ソリューションの出力フォルダに直接出力を組み込むことができ、ソリューションにプレビルドバイナリファイルをバンドルする必要がなくなり、プロジェクトを他の人と共有するのがはるかに簡単になります。

オプション3 - 代わりに、オープンソースプロジェクトの製品用に独自の標準化されたフォルダを作成することもできます。 C:\ oss \ include、c:\ oss \ lib、c:\ oss \ binなどを作成し、これらのパスをDevStudios libに追加してパスをインクルードし、それぞれをビルドするときにc:\ oss \ binをシステムPATH変数に追加しますOSSプロジェクトでは、これらの場所に適切なファイルをコピーします。

この設定では、2番目のPCでビルド環境を複製するのが難しくなるため、C:\ ossツリー全体をソース管理でも保持したい場合があります。

+0

私は物事を行うための鮮やかな、または少なくとも標準化された方法があることを望んでいたが、これはすべての可能性をカバーするようだ。 –

+0

Windows環境とUnixの最も近い類似点はバイナリのみのWinSxSフォルダです。これは、複数の異なるバージョンが並んで存在するようにライブラリの公式で署名されたバイナリのビルドを配布する全く信じられない方法ですアプリケーション(および開発者)は必要に応じて適切なバージョンを選択できます。 –

+0

残念ながら、(a)ウィンドウのバイナリビルドを行う、(b)WinSxSインクルージョンのために出力にデジタル署名するために必要な証明書を取得する、(c)それを行うことが必要な証明書を取得するようなOSSプロジェクトはありません。 –

1

最も簡単な方法は、独自のDLLをビルドしてプログラムディレクトリに組み込むことです。

はい、これはもう少しのスペースを使いますが、最近はHDが大容量で、互換性のないバージョン(DLL地獄)の頭痛を避けています。 Windowsはまた、さまざまなコンパイラでビルドされたバージョンのライブラリでも少しシワがありますので、独自のビルドを出荷するのが最も安全です。

+0

しかし、どこにライブラリのソースを置いていますか?別々に、あるいはプログラムと一緒にコンパイルしますか? –

+0

あなたのdevマシン上のどこにでもライブラリソースを展開してください。プログラムファイルではなくスペースなしでdirを使う方が簡単です。私はc:\ soft \ name_of_libを使用しますが、それは問題ではありません。彼らのディレクトリにそれらを構築する –