web-dev-qa-db-ja.com

cmakeツールチェーンファイルを使用したYoctoSDK

組み込みターゲット用のアプリケーションをクロスビルドするためのYoctoSDKを提供します。アプリケーション自体はCMakeを使用して構築されています。 SDKセットアップスクリプトは、多くの必要な環境変数(クロスコンパイラーの場所、sysrootなど)を提供します。これまでのところ、アプリケーションを構築するには十分でした。

ただし、最近以降、アプリケーションはBoostライブラリに依存しています(CMakeLists.txtのコマンドfind_package(Boost REQUIRED)を使用)。これで、CMakeは、SDK sysrootにインストールされていても、ライブラリが見つからないと文句を言います。しかし、Yoctoで直接アプリケーションをビルドすると、問題なく動作します。

いくつかの調査の結果、Yoctoはcmake呼び出しに追加されるtoolchain.cmakeファイルを生成することが判明しました。このファイルでは、CMakeがライブラリを見つけるために必要な変数CMAKE_FIND_ROOT_PATHが設定されています。このようなツールチェーンファイルを使用して、SDKを使用してビルドすることもできます。

今、YoctoがそのようなツールチェーンファイルをSDKでエクスポートするメカニズムを提供しているかどうか疑問に思っています。または、SDKがスクリプトなどを提供して、SDKビルドホストに直接ツールチェーンファイルを自動的に作成する場合もあります。

または、SDKのユーザーにツールチェーンファイルを手動で作成してcmake呼び出しに追加するように指示するだけですか?

10
Georg P.

イメージベースのSDKを使用している、つまりbitbake <image> -c populate_sdkでビルドしていると仮定すると、次をimage.bbに追加すると修正されます。

TOOLCHAIN_Host_TASK += "nativesdk-cmake"

これにより、SDKにOEToolchainConfig.cmakeファイルが作成されます。 SDK環境ファイルを入手すると、cmakecmake -DCMAKE_TOOLCHAIN_FILE=$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmakeのエイリアスになり、開発者をさらに支援します。

11
Anders