2009-07-09 8 views
2

私は、依存関係のロードと負荷があるC++プロジェクトを持っています。このプロジェクトはLinuxとWindows上で動作するはずなので、私たちはそれをCMakeに移植しました。現在、ほとんどの依存関係はソースツリーに含まれており、プロジェクトと一緒にビルドされているので、問題はありません。プラットフォーム間のバイナリ依存関係の扱い

しかし、私たちはFortranコードなどに依存する1つのバイナリを持っており、ビルドするのは本当に複雑です。 Linuxの場合、パッケージとしては利用できませんが、プリコンパイルされたバイナリまたはフルソース(BLASライブラリがインストールされている必要があります。ウィンドウの場合、同じライブラリがバイナリとして利用可能で、Windows用のビルディングはもっと複雑に見えます。

質問はどうやってそのような依存関係を処理するのですか?サポートされているプラ​​ットフォーム用のバイナリをチェックインし、そうでない場合(つまり、バイナリの場所を手動でポイントする)ビルド環境を設定するように要求するか、実際にコンパイルするようにしますか? 10ライブラリ - BLASライブラリはここで最大の痛みです)、またはそれを処理する他の推奨される方法がいくつかありますか?

答えて

1

バイナリがビルドプロセスの他の部分と独立している場合は、確実にチェックインする必要があります。しかし、バイナリのすべてのバージョンを含めることはできません(私はすべてのプラットフォームとコンパイルフラグを使用するかもしれません)ソースからのビルドは必須と思われます。

私は似たようなことをしました。私は必要なライブラリ/バイナリのソースコードアーカイブをチェックインしました。次に、makefile/scriptsを作成して、特定の場所(標準のOSの場所はありません)のターゲットプラットフォーム/フラグに従ってビルドし、メインビルドプロセスを適切な場所を指すようにしました。私は必要なライブラリ/バイナリの正しいバージョンとオプションを処理できるようにそれを行っています。さまざまなプラットフォームで動作するようにするのは非常に難しい作業ですが、時間がかかります!

もちろん、クロスプラットフォームのビルドツールを使用すると簡単です:)

1

あなたに1つの質問。ユーザーはこのバイナリを変更する必要がありますか?それとも、そのバイナリを使用してアクセスすることができて嬉しいですか?変更する必要がない場合は、バイナリをチェックインします。

+1

エンドユーザーはバイナリを変更しないでください。唯一の問題は、エンドユーザーに異なるコンパイルスイッチがある場合、バイナリが互換性がなくなる可能性があることです。そのため、最初はバイナリをチェックインすることをお勧めします。 – Anteru

+0

私はまったく同じ質問をしています。私は異なるプラットフォームを試して構成を構築したいので、バイナリは非常に簡単に互換性がなくなる可能性があります。これについて詳しく教えてください、ラルフセチンジャー? – danijar

1

非常に頻繁に変更されない場合は、各プラットフォームのバイナリをチェックインすることに同意します。これによりビルド時間が短縮されるだけでなく、不必要なコンパイルによる不満も軽減されます。

関連する問題