ESP32头文件包涵 src和inc的CMakeLists.txt的路径配置

2024-01-01 01:10

本文主要是介绍ESP32头文件包涵 src和inc的CMakeLists.txt的路径配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

最近想搞ESP32了,相中它的WIFI、蓝牙功能。
STM32寄存器开发习惯了,身为一个老顽固,底层还是想用寄存器开发(IO、通信啥的)。
使用VSCode开发,Keil和IAR这种开发软件不需要配置啥,没接触过感觉寸步难行,头文件的包涵就有问题了,不知道是不是我打开的方式不对,一直搜不到解决方法,没有针对我这种疑难杂症的,反复琢磨,今天终于包涵成功了,记录一下方法,可能会对同好有所帮助。

正文

新建一个空白工程如下图所示。

在这里插入图片描述


在工程文件夹内先建立 components 文件夹。
注意: 一定要在 components 文件夹中添加自己的.c文件,否则会调用失败。
如果不在 components 文件夹中添加自己的.c文件,只引用.h文件是没有问题的。
再在刚刚建立的 components 文件夹中建立 inc 和 src。
在 inc 和 src 中分别添加自己的 工程文件,下面以 我自己创建的 ESP32_Core.c (该文件一定要在 components 文件夹中)和 ESP32_Core.h 为例。
如下图。
在这里插入图片描述


简单的写一下 ESP32_Core.c 和 ESP32_Core.h 里面的内容,方便接下来的调用。

ESP32_Core.c 文件内容如下

#include "ESP32_Core.h"void SysClock_Init(void)
{}

ESP32_Core.h文件内容如下

#ifndef __ESP32_Core_H
#define __ESP32_Core_H
//-----------------------------------------------------------------------------------------------
#define SUCCEED ((uint8_t)0)
#define FAILED  ((uint8_t)1)
#define OFF		((uint8_t)0)
#define ON		((uint8_t)1)
//-----------------------------------------------------------------------------------------------
void SysClock_Init(void);
//-----------------------------------------------------------------------------------------------
#endif

然后在 main.c 中调用 SysClock_Init() 函数。

#include <stdio.h>
#include "ESP32_Core.h"
void app_main(void)
{SysClock_Init();
}

此时编译,可以看到编译不过去,找不到ESP32_Core.h

在这里插入图片描述


在使用 Keil 或者 IAR 时,如果要包涵自己的头文件,也需要配置 .h 的路径。
那么在这里需要怎么配置呢?就是在 CMakeLists.txt 中配置路径。

将 main.c 所在的文件夹内的 CMakeLists.txt 复制到 ESP32_Core.c 所在的文件夹中,即复制到 src 中,然后修改配置如下,添加 ESP32_Core.c 所需要的路径。
在这里插入图片描述

配置完 ESP32_Core.c 的 CMakeLists.txt 后,还需要配调用 ESP32_Core.h 的 main.c 的 CMakeLists.txt 文件。
修改 main.c 所在文件夹内的 CMakeLists.txt 文件,添加 ESP32_Core.h 的路径。
然后再编译,解决了,编译通过。
在这里插入图片描述


但是可以看到,当前 CMakeLists.txt 使用的是绝对路径,如果复制该工程后,还需要但需修改路径,很不方便,那么就可以使用相对路径。
在这里插入图片描述

可以看到,这回就是相对路径了。我原来就是纠结怎么退到上一层文件夹,现在知道了
“…/components/inc”就代表上一层文件夹 中的 components 文件夹的 inc
“…/inc”就代表上一层文件夹 中的 inc
这样就可以随心所欲的引用不同路径了。

idf_component_register(SRCS "main.c"INCLUDE_DIRS ".""../components/inc")
idf_component_register(SRCS "ESP32_Core.c"INCLUDE_DIRS ".""../inc")

这篇关于ESP32头文件包涵 src和inc的CMakeLists.txt的路径配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/557749

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

hdu2544(单源最短路径)

模板题: //题意:求1到n的最短路径,模板题#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#i

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10