👏
[CMake] CMAKE_SYSROOT と CMAKE_FIND_ROOT_PATH の違い
はじめに
CMakeでクロスビルドする場合などに利用するCMAKE_SYSROOT
とCMAKE_FIND_ROOT_PATH
変数の違いが良く分からなかったのですが、以下のパッチを開発者の方から貰ったことでクリアになったのでまとめています。
結論としては、CMAKE_SYSROOT
を指定していれば、CMAKE_FIND_ROOT_PATH
は不要です。
CMAKE_FIND_ROOT_PATH
pkg_config
やfind_library
でサーチするライブラリのルートパスを指定します。
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.
Discussion