我将CMake与使用yocto构建的自定义工具链一起使用。但是我有一个问题,工具链的目标计算机为sysroot,构建机器为sysroot。
CMake只会在构建系统sysroot中查找库。
例如我正在使用:
find_package(libxml2)
但是,它始终会在构建系统sysroot中而不是目标sysroot中找到libxml2。如何告诉它仅查看目标sysroot?
最佳答案
如何告诉它仅查看目标sysroot?
有一系列CMake变量CMAKE_FIND_ROOT_PATH_MODE_*
,它可以针对不同的CMake命令调整搜索策略:
变量列表:
find_library()
调用find_path()
和find_file()
调用find_package()
(当搜索*Config.cmake
文件时)。 find_program()
调用。 通常,具体的
find_package()
调用可能会受到所有这些变量的影响。在搜索库的情况下,通常仅设置三个库就足够了:# Search libraries only under *target* paths.
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
变量
CMAKE_FIND_ROOT_PATH_MODE_*
通常在工具链文件中设置。
关于cmake - 使用find_package()交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41294056/