自己创建XXConfig.cmake文件

创建自定义的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。每个文件夹下面放了相应的文件,现在有如下的文件夹结构:

  • YYL
    • include
      • yyl.h
    • lib
      • yyl.lib
    • bin
      • yyl.dll

想要实现在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按钮,会提示错误
自己创建XXConfig.cmake文件_第1张图片

需要把Opencv_DIR的路径切换到你的opencv路径下包含OpenCVConfig.cmake的文件夹下
自己创建XXConfig.cmake文件_第2张图片
再次点击configure,错误消失。

你可能感兴趣的:(构建工具)