我正在尝试使用cmake链接libconfig ++库。我安装了这个库 使用apt-get所以我假设它将有一个.cmake文件,所以我可以使用find_package。问题是我不知道要使用什么包名。我试过libconfig,config,config ++作为包名无济于事。
作为一般性问题,如何找出与库相关联的包。
我知道find_package会查看CMAKE_MODULE_PATH以查看是否有.cmake脚本。如何找出系统中CMAKE_MODULE_PATH的值是什么。它不是环境变量。我正在运行ubuntu 12.04。
感谢任何帮助。
答案 0 :(得分:6)
要使用find_package,您需要具有相应的Find或Config cmake文件。但是库可能不会提供它,看来你的库就是这样的情况。您可以使用find_library查找库,使用find_path查找包含目录。使用这些命令,您甚至可以自己编写FindXXX.cmake。
CMAKE_MODULE_PATH不是环境变量,它是CMake的环境变量。此变量供您设置,如果您有其他模块目录,默认情况下它是空的。这用于“模块”模式。在这种模式下,CMake在CMAKE_MODULE_PATH(您的模块)或CMake附带的模块中搜索FindXXX.cmake,如果找到它,则用它来查找库及其标题。
如果找不到该模块,则会切换到“Config”模式。在Unix上,它在以下目录中搜索ConfigXXX.cmake:
<prefix>/(lib/<arch>|lib|share)/cmake/<name>*/
<prefix>/(lib/<arch>|lib|share)/<name>*/
<prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/
此文件随库一起提供,因此无需查找任何内容,它们包含所有信息,库和包含位置等。
关于命名方案,没有标准方案。你可以看看Standard CMake modules。在Internet上找到名为FindLibConfig.cmake的库的模块
对于你的情况,库没有相应的cmake文件,因此你应该自己编写(或者已经编写)并将该文件的目录添加到CMAKE_MODULE_PATH。
我建议你阅读how find_package command works和how to write FindXXX.cmake files。