👏

[CMake] CMAKE_SYSROOT と CMAKE_FIND_ROOT_PATH の違い

2022/08/07に公開

はじめに

CMakeでクロスビルドする場合などに利用するCMAKE_SYSROOTCMAKE_FIND_ROOT_PATH変数の違いが良く分からなかったのですが、以下のパッチを開発者の方から貰ったことでクリアになったのでまとめています。

結論としては、CMAKE_SYSROOTを指定していれば、CMAKE_FIND_ROOT_PATHは不要です。

https://github.com/sony/flutter-elinux/pull/105

CMAKE_FIND_ROOT_PATH

pkg_configfind_libraryでサーチするライブラリのルートパスを指定します。

https://cmake.org/cmake/help/v3.0/command/find_library.html

CMAKE_SYSROOT

いわゆるrootfsのパスを指定する場合に利用します。ライブラリのサーチ順序は、CMAKE_FIND_ROOT_PATHの後にCMAKE_SYSROOTと定義されているため、結果的にCMAKE_SYSROOTを指定する場合はCMAKE_FIND_ROOT_PATHの指定は不要になります。

By default at first the directories listed in CMAKE_FIND_ROOT_PATH are searched, then the CMAKE_SYSROOT directory is searched, and then the non-rooted directories will be searched.

https://cmake.org/cmake/help/latest/command/find_package.html

Discussion