news 2026/4/21 15:01:23

CMake include() 的查找机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CMake include() 的查找机制

解释 CMake 如何找到driver_ecspi_MIMX8ML8.cmake

[2 tools called]

CMake 的include()通过CMAKE_MODULE_PATH查找文件。工作原理如下:

CMakeinclude()的查找机制

1. 查找顺序

当执行include(driver_ecspi_MIMX8ML8)时,CMake 按以下顺序查找:

  1. 如果文件名包含路径分隔符(/\),直接使用该路径

    include(boards/armgcc/flags.cmake) # 直接使用相对路径
  2. 如果文件名不包含路径分隔符,在CMAKE_MODULE_PATH中搜索

    include(driver_ecspi_MIMX8ML8) # 在 CMAKE_MODULE_PATH 中搜索

2. 在你的项目中的实际查找过程

查看你的CMakeLists.txt

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/SDK/devices/MIMX8ML8/utilities/debug_console_lite ${CMAKE_CURRENT_SOURCE_DIR}/SDK/devices/MIMX8ML8/drivers ${CMAKE_CURRENT_SOURCE_DIR}/SDK/devices/MIMX8ML8 ${CMAKE_CURRENT_SOURCE_DIR}/SDK/components/uart ${CMAKE_CURRENT_SOURCE_DIR}/SDK/components/lists ${CMAKE_CURRENT_SOURCE_DIR}/SDK/CMSIS/Core/Include ${CMAKE_CURRENT_SOURCE_DIR}/SDK/devices/MIMX8ML8/utilities )

当执行include(driver_ecspi_MIMX8ML8)时,CMake 会:

  1. 在第 1 个目录查找:SDK/devices/MIMX8ML8/utilities/debug_console_lite/driver_ecspi_MIMX8ML8.cmake(未找到)
  2. 在第 2 个目录查找:SDK/devices/MIMX8ML8/drivers/driver_ecspi_MIMX8ML8.cmake(找到)

3. 两种使用方式对比

方式一:使用 CMAKE_MODULE_PATH(推荐)

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/SDK/devices/MIMX8ML8/drivers ) include(driver_ecspi_MIMX8ML8) # 简洁,不需要完整路径

方式二:直接指定路径

include(${CMAKE_CURRENT_SOURCE_DIR}/SDK/devices/MIMX8ML8/drivers/driver_ecspi_MIMX8ML8) # 或者 include(SDK/devices/MIMX8ML8/drivers/driver_ecspi_MIMX8ML8)

4. 为什么使用 CMAKE_MODULE_PATH?

  • 简洁:include(driver_ecspi_MIMX8ML8)比完整路径更短
  • 可维护:路径集中管理,修改时只需改一处
  • 符合 CMake 约定:类似 C/C++ 的#include <header.h>查找机制

5. 验证查找路径

可以在 CMakeLists.txt 中添加调试信息:

# 查看 CMAKE_MODULE_PATH 的内容 message(STATUS "CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}") # 查看实际找到的文件路径 include(driver_ecspi_MIMX8ML8) # CMake 会在找到文件时输出信息(如果文件中有 message())

总结:CMAKE_MODULE_PATH相当于 CMake 的“搜索路径列表”,include()会在这些路径中查找.cmake文件,因此不需要写完整路径。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 16:51:04

Langchain-Chatchat结合MinIO实现文档持久化存储

Langchain-Chatchat 结合 MinIO 实现文档持久化存储 在企业级 AI 应用日益普及的今天&#xff0c;越来越多组织开始构建基于大模型的本地知识库问答系统。然而一个现实问题始终困扰着开发者&#xff1a;当用户上传了上百份 PDF、Word 手册后&#xff0c;如何确保这些文档不会因…

作者头像 李华
网站建设 2026/4/18 23:21:06

Langchain-Chatchat如何处理模糊性问题的回答?

Langchain-Chatchat 如何应对模糊性问题&#xff1a;从语义理解到可控生成的实践路径 在企业级智能问答系统中&#xff0c;一个看似简单的问题往往暗藏玄机。比如用户问&#xff1a;“那个项目进展怎么样了&#xff1f;”——“那个”指的是哪个&#xff1f;是上周会议提到的新…

作者头像 李华
网站建设 2026/4/20 18:23:51

线下娱乐破局:透明化运营+双线引流

一、传统线下娱乐场所的普遍困局许多实体娱乐场所的经营者都面临相似的烦恼&#xff1a;客流量越来越不稳定&#xff0c;顾客消费频次明显下降。设备投入不断加大&#xff0c;但真正能持续产生收益的项目却寥寥无几。更棘手的是&#xff0c;收入来源过度依赖到店消费——天气不…

作者头像 李华
网站建设 2026/4/19 17:31:45

docker安装mongodb

一、前期准备 1.在服务器上面创建三个目录做为挂载到docker (/mongo/data,/mongo/logs,/mongo/conf ) 由于我们要把宿主的配置文件同步容器中&#xff0c;所以要在/mogo/conf创建mogodb的配置文件 mongod.conf ,内容如下&#xff1a; # 系统日志 systemLog:destination: fil…

作者头像 李华
网站建设 2026/4/17 14:21:16

我的网络安全实战学习笔记:记录从零到熟练的每个关键步骤与工具

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

作者头像 李华
网站建设 2026/4/18 4:04:27

Langchain-Chatchat结合OCR技术处理扫描版PDF

Langchain-Chatchat 结合 OCR 技术处理扫描版 PDF 在企业知识管理日益智能化的今天&#xff0c;一个常见的难题浮出水面&#xff1a;大量历史文档以扫描图像的形式沉睡在档案库中。这些 PDF 文件看似清晰可读&#xff0c;实则对计算机而言是一片“黑盒”——没有文本层&#xf…

作者头像 李华