Don*_*now 3 cmake cross-compiling
我正在使用CMake和我使用yocto构建的自定义工具链.我有一个问题,工具链有目标机器的sysroot和构建机器的sysroot.
CMake只在构建系统sysroot中查找库.
例如我正在使用:
find_package(libxml2)
Run Code Online (Sandbox Code Playgroud)
但它始终在构建系统sysroot中找到libxml2而不是目标sysroot.我怎么能告诉它只查看目标sysroot?
我怎么能告诉它只查看目标sysroot?
有一系列CMake变量CMAKE_FIND_ROOT_PATH_MODE_*
,可以调整不同CMake命令的搜索策略:
BOTH值表示搜索目标和主机(构建)路径.当未设置变量时,这也是默认行为.
ONLY值表示仅搜索目标.
永远不会意味着,只搜索主机.
变量列表:
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY会影响find_library()
通话
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE会影响find_path()
和find_file()
调用
find_package()
在CONFIG模式下(*Config.cmake
搜索文件时),CMAKE_FIND_ROOT_PATH_MODE_PACKAGE会受到影响.
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM会影响find_program()
通话.
通常,具体find_package()
调用可能会受到所有这些变量的影响.在搜索库的情况下,通常只需设置3个库就足够了:
# 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)
Run Code Online (Sandbox Code Playgroud)
变量CMAKE_FIND_ROOT_PATH_MODE_*
通常在工具链文件中设置.
归档时间: |
|
查看次数: |
2834 次 |
最近记录: |