2017-05-28 7 views
2

私は最近::花を高め、彼らは「FindHana.cmakeモジュールを使用することをお勧めすることを自分のドキュメントpageに読み取るためのアクセス権を取得するには、最新のブーストライブラリをダウンロードハナを外部プロジェクトとして使用するように設定する」と述べた。フルブーストなしブースト::花とCMakeのを使用すると、(外部プロジェクトを?)をインストール

私はので、私はちょうどヘッダ経路に私のhana.hppを含めるようにコンパイルフラグを設定し、これを把握することができませんでしたが、私はドキュメントで推奨この方法を達成する方法を知ってみたいです。

答えて

1

Boostの次期バージョンでは、HanaConfig.cmakeというファイルが提供されています。このファイルは、make installと入力すると自動的に<install-prefix>/lib/cmake/hana/HanaConfig.cmakeにインストールされます。その後、提供あなたの<install-prefix>CMAKE_PREFIX_PATHの一部(デフォルト、システム全体の場所にインストールした場合ケースになる)、あなただけに必要です:

find_package(Hana) 
target_link_libraries(some-target hana) 

これは権利を追加するにディレクトリを含めますsome-target。これは、他のCMakeプロジェクトに依存する正しい方法です。これを考慮してHanaの最近のやり方を変更しました(今はdevelop)。

+0

make installを実行せずにCMakeとfind_package(Hana)を使用することはできますか?CMAKE_MODULE_PATHに私が最も関心を持っているのを追加する考えです。 – dabyly

+0

いいえ、 'make install'は' HanaConfig.cmake'ファイルを置く場所で、 'find_package'が探すものです。つまり、システム全体の場所にHanaをインストールする必要があるわけではありません。あなたは問題なくHanaをローカルにインストールし、正しい 'CMAKE_PREFIX_PATH'を渡すことができます。例えば、[dyno](https://github.com/ldionne/dyno)を参照してください。このコメントとこのリンクの間には –

+0

がありました。 https://blogs.kde.org/2008/12/12/how-get-cmake-find-what-you-want-it – dabyly

0

cmakeのでは、find_package(SomePackage)機能はFind<SomePackage>.cmakeを実行します。多くの場合、Find<SomePackage>.cmakeはcmakeインストールに含まれています。そうでない場合は、そのファイルをプロジェクト構造に追加し、そのファイルのパスをCMAKE_MODULE_PATHに追加する必要があります。

私はthisを見つけるために、迅速な検索をしました。その場合には、これはあなたがそれを使用したい方法です:

find_package(Hana) 

if (${Hana_FOUND}) 
    include_directories(${Hana_INCLUDE_DIRS}) 
endif() 

${Hana_FOUND}がスクリプトによって設定されていない場合、あなたはスクリプトにそれを見つける場所についてのよりよいヒントを与えるためにHana_ROOTまたはHana_INSTALL_PREFIXを設定することができます。


ブーストとも言います。ブーストはわずかに異なり、FindHanaを使用しません。ブーストはそれ自身のモンスターですが、ブーストを見つけるためのドキュメントがありますhere。ブースト::花の場合は、あなたはとてもようFindBoostを使用したい:あなたは問題がある場合

find_package(Boost) 
if (${Boost_FOUND}) 
    include_directories(${Boost_INCLUDE_DIRS}) 
endif() 

、あなたはcmakeのは、インストールを見つけることBOOST_INCLUDEDIRBOOST_ROOTを設定してみてください。

+0

私はブーストfind_packageビジネスをうまくやってくれました。 Hanaをインストールしていないという事実から私の問題が生じると思う。私はヘッダファイルだけを入れたかった。 – dabyly

+0

すでに後押しをインストールしている場合は、[はなライブラリ](http://www.boost.org/doc/libs/1_64_0/libs/hana/doc/html/index.html)が含まれています。さらに何もインストールする必要はなく、 '#include 'と 'namespace hana = boost :: hana'だけ必要です。 – Stewart

+0

私の状況はちょっと複雑で、私はおそらくこれを反映するために私の投稿を編集しますが、私が "インストールした"追加機能はhanaヘッダーを含むものではありません。私は花を試すことに興味があったので、最近のライブラリを私の家にダウンロードしました。この新しいブーストディレクトリにmake installを実行しないと、find_package(花)を使うことができますか?申し訳ありませんが、私は間違った方法この質問をして約つもりならば、私はちょうどスタックで始まるよ... – dabyly

関連する問題