我想在使用CMake的项目中使用一些第三方标头(或库)。但它没有找到标题(库)。为什么CMake找不到它?
答案 0 :(得分:1)
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