zoukankan      html  css  js  c++  java
  • 怎么写自己的CMakeLists.txt--二

    之前写过一篇及其简单的关于CMakeLists.txt的写法,现在重点剖析find_package的用法。

    如果程序中使用了外部库,事先并不知道它的头文件和链接库的位置,就要给出头文件和链接库的查找方法,并将他们链接到程序中。

    FIND_PACKAGE(<name> [major.minor] [QUIET] [NO_MODULE] 
    [[REQUIRED|COMPONENTS] [componets...]])

    1) find_package()的查找路径

    find_package()命令首先会在模块路径中寻找 一个事先编译好的Find.cmake文件,而且一般官方给出了很多,不需要自己编写这是查找库的一个典型方式。
    具体查找路径依次为CMake:

    模块模式

    • ${CMAKE_MODULE_PATH}中的所有目录。
    • 模块目录 /share/cmake-x.y/Modules/ 这称为。

    配置模式

    • ~/.cmake/packages/或/usr/local/share/中的各个包目录中查找,寻找<库名字的大写>Config.cmake 或者 <库名字的小写>-config.cmake (比如库Opencv,它会查找/usr/local/share/OpenCV中的OpenCVConfig.cmake或opencv-config.cmake)。

    2) .cmake文件定义变量
    不管使用哪一种模式,只要找到
    .cmake,*.cmake里面都会定义下面这些变量:

    <NAME>_FOUND
    <NAME>_INCLUDE_DIRS or <NAME>_INCLUDES
    <NAME>_LIBRARIES or <NAME>_LIBRARIES or <NAME>_LIBS
    <NAME>_DEFINITIONS

    注意大部分包的这些变量中的包名是全大写的,如 LIBFOO_FOUND ,有些包则使用包的实际大小写,如 LibFoo_FOUND

    3)添加头文件与链接库文件

    如果找到这个包,则可以通过在工程的顶层目录中的CMakeLists.txt 文件添加 include_directories(_INCLUDE_DIRS) 来包含库的头文件,添加target_link_libraries(源文件 _LIBRARIES)命令将源文件与库文件链接起来。

    注:内容转自https://www.cnblogs.com/narjaja/p/9533199.html

  • 相关阅读:
    [BZOJ 1698] 荷叶池塘
    [BZOJ 3132] 上帝造题的七分钟
    [JLOI2011] 飞行路线
    [Codeforces Round49F] Session in BSU
    [BZOJ 3036] 绿豆蛙的归宿
    CRC-16校验原理
    ubuntu下mysql的安装与配置
    【OpenCV】边缘检测:Sobel、拉普拉斯算子
    我对sobel算子的理解
    梯度算子(普通的+Robert + sobel + Laplace)
  • 原文地址:https://www.cnblogs.com/chaofn/p/10806907.html
Copyright © 2011-2022 走看看