我想在使用CMake的项目中使用一些第三方标头(或库)。但是它找不到标题(库)。为什么CMake找不到它?
CMake的查找例程在某些特定位置查找标头和库。这包括PATH
变量和已安装软件(例如,许多Linuces)的默认位置/usr/bin
。此外,它还评估CMake变量CMAKE_PREFIX_PATH
。
您有两种可能性可以帮助CMake查找所需的文件:
检查您的软件是否正确安装。对于自编译软件,通常是通过make install
或类似方式完成的。如果使用软件包(RPM或deb),则通常已安装它们,并且可以通过PATH
变量找到它们。
如果您不需要或可以安装该软件,则将其路径添加到CMAKE_PREFIX_PATH
变量中。要么将其传递给CMake调用,cmake -DCMAKE_PREFIX_PATH=/path/to/software ..
要么在CMake-GUI中编辑/添加相应的字段。
您必须删除CMakeCache.txt
,否则CMake不会找到该库,因为它不检查而是使用缓存的结果。重新运行CMake,它应该可以工作。
如果您的系统上有多个版本的库,请将要使用的库添加到中,CMAKE_PREFIX_PATH
因为变量在系统路径变量之前被求值。
一些模块提供特定的变量,例如mylib_DIR
或mylib_ROOT
指示搜索路径。不鼓励使用它,而只是为了向后兼容。新模块没有这些模块,因此添加此类变量的提交被CMake开发人员拒绝。
有关CMake如何搜索文件以及如何搜索文件的更多详细信息,可以在文档中找到:https : //cmake.org/cmake/help/latest/command/find_library.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句