创建自定义的XXConfig.cmake文件:
我们在使用cmake进行代码构建的时候,当需要通过find_package(XXX)来配置相关库的路径(头文件路径、链接库路径)的时候,如果没有在系统环境变量中设置相关的XXX_DIR等,cmake会提示出错。所以所有网上介绍某个库的安装教程中,在最后都会让你设置相关的系统环境变量。这样做一般没什么问题。但是当你由于项目等原因,需要某个库的多个版本。比如需要在机器上安装opencv2.4.9 opencv3.1.0等某个库的多个版本时候,由于系统环境变量对于某个特定的库只能设置一个相关的环境变量,因而,在使用不同版本的opencv时候,需要临时去系统环境变量中修改相关环境的值。这样就比较麻烦了。
有了xxConfig.cmake就方便多了,只需要把xxCongig.cmake放在库目录的顶层文件夹中。
使用xxConfig.cmake的优点
这时候就不需要在系统环境变量中设置include和lib的路径了。当然,系统的path变量中还是要加入dll的路径值,这是程序运行的保证。
示例
比如我自己编写了一个yyl的库,放在YYL文件夹下。YYL文件夹下有三个子文件夹:include、lib、bin。每个文件夹下面放了相应的文件,现在有如下的文件夹结构:
想要实现在cmake中使用find_package(YYL)来设置相关的环境变量,需要在YYL文件夹下创建一个名称为YYLConfig.cmake的文本文件。这里的YYL需要换成你自己对应的库文件名。
一个简单的YYLConfig.cmake文件内容如下(这是个精简的xxConfig.cmake文件,但是已经足够平时的个人使用。如果读者有兴趣,可以参考opencv build目录下的opencvConfig.cmake以及相关文档深入研究):
find_path(YYL_INCLUDE_DIR NAMES yyl.h PATHS “Your_own_path/YYL/include”)
find_library(YYL_LIBRARY NAMES yyl.lib PATHS “Your_own_path/YYL/lib” )
set(YYL_FOUND TRUE)
set(YYL_INCLUDE_DIRS ${YYL_INCLUDE_DIR})
set(YYL_LIBS ${YYL_LIBRARY })
mark_as_advanced(YYL_INCLUDE_DIRS YYL_LIBS )
使用方法:(工具 cmake-gui)
假设这里的YYL为opencv(以opencv为例)
在cmakelist.txt中加入find_package(YYL)
在cmake-gui下点击configure按钮,会提示错误
需要把Opencv_DIR的路径切换到你的opencv路径下包含OpenCVConfig.cmake的文件夹下
再次点击configure,错误消失。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)