【问题标题】:CMake does not find includes / librariesCMake 找不到包含/库
【发布时间】:2016-08-24 14:51:01
【问题描述】:

我想在使用 CMake 的项目中使用一些第三方头文件(或库)。但它没有找到标题(库)。为什么 CMake 找不到?

【问题讨论】:

    标签: cmake


    【解决方案1】:

    CMake 的查找例程在某些特定位置查找标头和库。这包括PATH 变量和已安装软件的默认位置,例如,对于许多 Linuces /usr/bin。此外,它还会评估 CMake 变量 CMAKE_PREFIX_PATH

    您有两种方法可以帮助 CMake 找到所需的文件:

    1. 检查您的软件是否安装正确。对于自编译软件,通常由make install 或类似人员完成。如果您使用软件包(RPM 或 deb),通常会安装它们,并且可以通过 PATH 变量找到它们。

    2. 如果您不想或无法安装该软件,请将其路径添加到 CMAKE_PREFIX_PATH 变量。将其传递给 CMake 调用 cmake -DCMAKE_PREFIX_PATH=/path/to/software .. 或在 CMake-GUI 中编辑/添加相应字段。

    你必须删除CMakeCache.txt,否则CMake将找不到库,因为它不检查而是使用缓存的结果。重新运行 CMake,它应该可以工作了。

    评估顺序

    如果您的系统上有多个版本的库,请将要使用的库添加到 CMAKE_PREFIX_PATH,因为变量在系统路径变量之前被评估。

    模块特定变量

    某些模块提供特定的变量,例如 mylib_DIRmylib_ROOT 来指示搜索路径。不鼓励使用它,它们仅用于向后兼容。新模块没有这些模块,添加此类变量的提交会被 CMake 开发人员拒绝。

    文档

    更多关于 CMake 如何搜索文件以及搜索顺序的详细信息可以在文档中找到:https://cmake.org/cmake/help/latest/command/find_library.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-09
      • 2013-03-05
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多