CMake找不到包含/库

usr1234567

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

usr1234567

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章