2017-01-31 7 views
6

私はYocto SDKを提供して、埋め込み対象のアプリケーションをクロスビルドします。アプリケーション自体はCMakeを使用して構築されています。 SDKセットアップスクリプトには、クロスコンパイラ、sysrootなどの場所のような多くの環境変数が用意されています。Yocto SDK with cmakeツールチェインファイル

しかし、最近、アプリケーションはBoostライブラリ(CMakeLists.txtのコマンドfind_package(Boost REQUIRED))に依存しています。 CMakeは、SDKのsysrootにインストールされていてもライブラリを見つけることができないという苦情を受けています。しかし、私がYoctoでアプリケーションを直接ビルドすると、うまく動作します。

若干の研究の結果、Yoctoがtoolchain.cmakeというファイルを生成し、これがcmakeコールに追加されていることが判明しました。このファイルでは、変数CMAKE_FIND_ROOT_PATHが設定されています。これは、CMakeがライブラリを探す必要があります。このようなツールチェーンファイルを使用して、SDKを使用してビルドすることもできます。

今、私はYoctoがSDKでこのようなツールチェーンファイルを書き出すためのメカニズムを提供しているのだろうかと思います。あるいは、SDKがSDKビルドホストに直接ツールチェーンファイルを自動的に作成するためのスクリプトなどを提供している場合。

SDKのユーザーにツールチェインファイルを手動で作成してcmakeコールに追加するように伝えるだけでいいですか?

答えて

7

image.bbに以下を追加すると、それを修正する必要があり、すなわちbitbake <image> -c populate_sdkでそれを構築し、あなたがイメージベースのSDKを使用していると仮定すると:

TOOLCHAIN_HOST_TASK += "nativesdk-cmake" 

あなたのSDKでOEToolchainConfig.cmakeファイルを与える必要があること。 SDK環境ファイルを入手した後、cmakecmake -DCMAKE_TOOLCHAIN_FILE=$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmakeへのエイリアスになり、開発者をさらに支援します。

+0

アンダーズさんに感謝しています。初めて私を助けてくれるわけではありません。 –

+0

ちょうどもう1つの質問 - 'bitbake meta-ide-support'を使ってビルドするときにこのファイルを作ることも可能ですか? 'TOOLCHAIN_HOST_TASK'を設定するファイル' meta-ide-support.bbappend'を作成しようとしましたが、何もしないようです。 –

+0

'meta-ide-support'を試したことはありません。それはツールチェインをビルドしますか?それ以外は 'TOOLCHAIN_HOST_TASK'は動作しません。 'meta-ide-support'の代わりにSDK-buildに追加してみませんか? – Anders