CMake没有find包含/库

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

CMake的查找例程在一些特定的地方查找头文件和库。 这包括PATHvariables,以及已安装软件的默认位置,例如许多Linuces /usr/bin 。 另外,它评估CMakevariablesCMAKE_PREFIX_PATH

你有两种可能性来帮助CMakefind所需的文件:

  1. 检查您的软件是否安装正确。 对于自编的软件,通常通过make install或类似的方式来完成。 如果使用软件包(RPM或deb),则通常会安装这些软件包,并可以通过PATHvariablesfind它们。

  2. 如果您不想要或可以安装该软件,请将其path添加到CMAKE_PREFIX_PATHvariables。 或者将它传递给CMake调用cmake -DCMAKE_PREFIX_PATH=/path/to/software ..或者编辑/添加CMake-GUI中的相应字段。

您必须删除CMakeCache.txt ,否则CMake将不会find该库,因为它不检查,而是使用caching的结果。 重新运行CMake,它应该工作。

评估顺序

如果您的系统上有多个版本的库,那么在CMAKE_PREFIX_PATH添加要使用的CMAKE_PREFIX_PATH因为在系统pathvariables之前会先评估variables。

模块特定的variables

一些模块提供特定的variables,如mylib_DIRmylib_ROOT来指示searchpath。 它的使用是不鼓励的,他们只是为了向后兼容。 新模块没有这些模块,并且提交添加这样的variables被CMake开发者拒绝。

文档

有关CMake如何search文件的更多细节以及在文档中可以find的顺序: https : //cmake.org/cmake/help/v3.6/command/find_library.html