2016-05-11 5 views
10

オープンソースのC++プロジェクトを作成しようとしています。私はそれが可能な限り構築するのは簡単だが、同時にクロスプラットフォームを望んでいる。 私はGitHub、CMake、LibSourceyを使って解決したので、boostやQtのようなguiや重いライブラリは必要ありません。 私の問題は、自分のプロジェクトをWindowsで簡単にビルドする方法を見つけることができないことです。これは私の開発環境です。 私のプロジェクトで使用するために、Windowsでライブラリを「インストールする」ことはできますか? Windowsにインストールする必要がありますか? 自動的にダウンロード、ビルド、リンクすることはできますか?CMake "make install"またはライブラリをウィンドウに含める

Windowsでは、インストーラ以外にポータブルバージョンも作成したいので、ハードコードされたライブラリパスは必要ありません。

Linuxのようないくつかのプラットフォームでは、ライブラリは分離可能に構築され、保守者によってパッケージ化されていると仮定します。だから私は自分のコピーを束ねるべきではありません。

私の質問は次のとおりです。 クロスプラットフォームで構築が容易なプロジェクトをセットアップするにはどうすればよいですか?ベストプラクティスは何ですか?

+0

開発プロセスの解決策を見つけたり、あるいはその両方を行うことについて話し合っているのですか? [msys2](https://sourceforge.net/projects/msys2/)は、必要なパッケージを管理するためにウィンドウ下で使用できます。 –

+0

最近、同じ問題が発生しました。msys2はすばらしく見えますが、Windows開発用にネイティブツールチェーンを使用する方が好きです。 –

+0

私はmsysを調べましたが、私はそれがネイティブであることを望みます。 msysでは、x64用にコンパイルするのがさらに難しく、適切なUnicodeをサポートしています。 – denisps

答えて

1
あなただけ あなた CMakeLists.txtに、このような行を追加して必要 cmake LibSourceryでは使用していますので、あなたは、たとえば contrib/LibSourceryLibSourceryのGitHubのレポへのURLのパスを使用してGitのレポで git submoduleを作成することができ

add_subdirectory(contrib/LibSourcery)

だから、人あなたのコードを使用したい場合は、(もちろんMSVC++を含む)のプロジェクトを作成するためにcmake -Gを実行した後にコードと依存関係をすべて取得するにはgit clone --recursive url を実行してください。 オープンプロジェクトIDEとビルドボタンを押すだけです

+0

それはうまくいかないようです。間違ったことをしているのか、LibSourceryがこのタイプのインクルージョンをサポートしていないのか分かりません。 私はそれをサブモジュールとしてcontribフォルダに含めましたが、Unixプラットフォームにライブラリを組み込むのが正しいかどうかはまだ分かりません。インストールされているライブラリが利用可能であればリンクしますか?どのようにインクルードを追加するのですか? – denisps

+0

@denisps cmakeも同様に外部プロジェクトをサポートしています。https://cmake.org/cmake/help/v3.0/module/ExternalProject.html – fghj

+0

この回答は最も近いようです。残念ながら、LibSourceryは壊れており、潜在的に放棄されているようです。 Linuxなどに既にインストールされているライブラリにリンクしているときに、どのように大文字小文字を使用するかを詳しく説明していただければ幸いです。 – denisps

1

babunを使用してください。 cygwin用のラッパーであり、必要なものすべてに対して完璧に働きます。

また、configシステムとしてluaを使用し、ウィンドウで正常に動作するpremakeを使用することもできます。

0

"make install"のアイデアはWindows上に存在しないため、エレガントなクロスプラットフォームの方法はないため、cmake installの使用は定義されていません。クロスプラットフォームに役立つと思われるものについては、これは不完全なwcmakeだと感じます。

私の解決策は、cmake installと同じargsをとり、Linuxでは単にinstallと呼ばれるカスタム_INSTALLを書くことです。Windowsではadd_commandを実行してインストールパスにpost-buildコピーを実行します同じこと。基本的に、_INSTALLは、クロスプラットフォームのインストールコマンドが動作すると予想されるように動作します。興味があれば_INSTALL funcを共有することができます。

_INSTALLはHelper.cmakeに置かれ、私のプロジェクトのすべてのCMakeList.txtに含まれているので、私はそれを呼び出して、生成されたlib/incファイルをwinとlinuxの両方に表示します。

関連する問題