news 2026/9/9 9:33:15

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/9/6 22:17:47

基于GUI-PLUS 搭配 Java Robot 实现智能桌面操控

目录 一、引言 二、代码实现 1. 新增工具类 CoordinateExtractUtil 1.1 核心方法说明 2. DesktopRobotUtil 修改 2.1 功能概述 2.2 核心方法解析 鼠标操作 键盘操作 滚轮操作 注意事项 3. OperationController 接口 三、结果演示 一、引言 在前文 基于GUI-PLUS 的桌…

作者头像 李华
网站建设 2026/9/9 1:14:49

Langchain-Chatchat实现多租户知识隔离的技术方案

Langchain-Chatchat 实现多租户知识隔离的技术方案 在企业智能化转型加速的今天&#xff0c;越来越多组织开始构建基于大语言模型&#xff08;LLM&#xff09;的本地知识库系统。然而&#xff0c;一个现实难题摆在面前&#xff1a;如何让多个部门、子公司甚至外部客户共享同一套…

作者头像 李华
网站建设 2026/9/8 7:04:05

震撼发现!GPT-5记忆系统不用RAG?四大层级架构详解(建议收藏)

本文通过逆向工程揭秘GPT-5记忆系统架构&#xff0c;发现其摒弃了传统向量数据库和RAG技术&#xff0c;转而采用四大层级&#xff1a;会话元数据、用户记忆、近期对话摘要和当前会话滑动窗口。这种分层设计既实现了个性化体验&#xff0c;又避免了高计算开销&#xff0c;在速度…

作者头像 李华
网站建设 2026/9/9 4:53:11

AI应用架构师主动学习实践:解决实际难题

AI应用架构师主动学习实践&#xff1a;解决实际难题 关键词&#xff1a;AI应用架构师、主动学习、实际难题、数据处理、模型优化、应用部署 摘要&#xff1a;本文深入探讨AI应用架构师在主动学习方面的实践&#xff0c;旨在解决实际工作中面临的各类难题。通过阐述主动学习的概…

作者头像 李华
网站建设 2026/9/7 16:33:03

Pandas库基础概念和基础操作

Pandas 是 Python 中用于数据分析和处理最流行的开源库之一&#xff0c;建立在 NumPy 之上&#xff0c;提供了高性能、易用的数据结构和数据分析工具。它特别适合处理结构化数据&#xff08;如表格型或异质型数据&#xff09;。以下是 Pandas 的基础概念详细介绍&#xff1a;一…

作者头像 李华