Mus*_*afa 1 cmake find package
我试图使用cmake链接libconfig ++库.我使用apt-get安装了库,所以我假设它有一个.cmake文件,所以我可以使用find_package.问题是我不知道要使用什么包名.我试过libconfig,config,config ++作为包名无济于事.
作为一般性问题,如何找出与库相关联的包.
我知道find_package会查看CMAKE_MODULE_PATH以查看是否存在.cmake脚本.如何找出系统中CMAKE_MODULE_PATH的值是什么.它不是环境变量.我正在运行ubuntu 12.04.
任何帮助表示赞赏.
要使用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)/
Run Code Online (Sandbox Code Playgroud)
这个文件随库一起提供,因此不需要查找任何内容,它们包含所有信息,库和包含的位置等.
关于命名方案,没有标准方案.您可以查看标准CMake模块.在Internet上为您的库找到名为FindLibConfig.cmake的模块
对于您的情况,库没有相应的cmake文件,因此您应该自己编写(或找到已经编写的)并将该文件的目录添加到CMAKE_MODULE_PATH.
我建议你阅读find_package命令的工作原理以及如何编写FindXXX.cmake文件.
| 归档时间: |
|
| 查看次数: |
3055 次 |
| 最近记录: |