CMake没有find包含/库
我想在使用CMake的项目中使用一些第三方头文件(或库)。 但它没有find头(库)。 为什么CMake没有find它?
CMake的查找例程在一些特定的地方查找头文件和库。 这包括PATH
variables,以及已安装软件的默认位置,例如许多Linuces /usr/bin
。 另外,它评估CMakevariablesCMAKE_PREFIX_PATH
。
你有两种可能性来帮助CMakefind所需的文件:
-
检查您的软件是否安装正确。 对于自编的软件,通常通过
make install
或类似的方式来完成。 如果使用软件包(RPM或deb),则通常会安装这些软件包,并可以通过PATH
variablesfind它们。 -
如果您不想要或可以安装该软件,请将其path添加到
CMAKE_PREFIX_PATH
variables。 或者将它传递给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_DIR
或mylib_ROOT
来指示searchpath。 它的使用是不鼓励的,他们只是为了向后兼容。 新模块没有这些模块,并且提交添加这样的variables被CMake开发者拒绝。
文档
有关CMake如何search文件的更多细节以及在文档中可以find的顺序: https : //cmake.org/cmake/help/v3.6/command/find_library.html