当前位置:   article > 正文

cmake(三十五)Cmake之include指令_cmake include

cmake include

一    CMakeLists.txtcmake脚本联系和区别

①    cmake脚本

  1. (1) cmake文件里面通常是'什么信息(information)'
  2. -- '.cmake文件'里包含了一些"公共(复用)"'cmake命令'和一些'宏|函数'
  3. -- 当CMakeLists.txt'包含该.cmake文件'时,当'编译'运行时,该.cmake里的一些命令就会在该'包含处'得到加载'执行',在'后续'能够'调用该.cmake里'的一些宏和函数
  4. -- .cmake文件是一个'模块(module)文件',可以被'include'到CMakeLists.txt中
  5. 备注: cmake'脚本'不要包含'工程之类'的信息 -->例如:add_subdirectory()、CMAKE_CURRENT_之类的
  6. 最佳实践: cmake'不要'调用CMakeLists.txt
  7. (2) .cmake模块文件被'加载的时机' -->'CMakeLists.txt'
  8. -- @1: include(module_name.|file)
  9. -- @2: find_package(module_name)
  10. 备注: 这两种'加载'方式有'区别'的,或者说find_package中'.cmake全文件名'有一定的要求

②    CMakeLists.txt

  1. (1) CmakeLists.txt才是cmake的'正统'文件
  2. (2) 执行cmake 命令时候,会'自动加载'对应'路径'下的CMakeLists.txt文件-->'一般时项目根路经下'
  3. eg: cmake .. -->加载'上级目录下'的CMakeLists.txt文件 -->'out of build常见的场景'
  4. (3) CMakeLists.txt通过'add_subdirectory(dir)' -->'自动加载'该目录下的'CMakeLists.txt'文件

二    include指令

应用场景

(1)基础

①    官方帮助文档

  1. +++++++++++'普通(file)文件'+++++++++++
  2. 1)如果是'相对'路径,是'相对于'include指令所在的'CMakeLists.txt'的路径
  3. 2)'绝对'路径-->'建议'
  4. 一般我们会将'cmake'文件放到cmake目录下,所以'前缀'一般是: CMAKE_CURRENT_SOURCE_DIR/cmake/
  5. 备注: 这里的'file'文件,必须以'.cmake'结尾
  6. +++++++++++'模块(module)文件'+++++++++++
  7. 1)首先搜索'Cmake builtin module directory' -->'cmake 内置的module目录'-->'centos7 /usr/share/cmake/MOdules/'
  8. 2)找不到'再搜索'-->'CMAKE_MODULE_PATH'
  9. 3)再找不到,则'报错'-->'NOTFOUND'
  10. 强调:如果非'.cmake'结尾的文件表示是'module'-->会自动查找'内建-->CMAKE_MODULE_PATH'路径下的"module_name.cmake"文件

CMP0017

②    include和add_subdirectory的区别

参考博客

  1. include(src/CMakeLists.txt) -->cmake也可以这样做,但是相对'add_subdirectory(src)',我们'不推荐'前者
  2. 原因: include破坏了'Build Tree'的机制-->不能将'Source Tree''build''映射''Build Tree'

find_package和include的区别

(2)实践

①    项目结构

②    CMakeLists.txt文件

③    测试

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/292925
推荐阅读
相关标签
  

闽ICP备14008679号