1.加载环境后
注:加载环境后,可以用idf.py 查看相关命令
2.用idf.py create-project filename创建工程
创建工程后,会出现如图所示的结构。
3.进入刚刚创建好的工程下,配置目标芯片,我以ESP32为例
idf.py set-target esp32
设置目标芯片后,会出现如图结构。
其中build是编译过程中会出现的文件,sdkconfig是运行用于保存menuconfig的文件。
4.然后使用idf.py menuconfig。
5.接着就可以写代码然后用idf.py build 编译啦。
- myProject/
- CMakeLists.txt
- sdkconfig
- components/ - component1/ - CMakeLists.txt
- Kconfig
- src1.c
- component2/ - CMakeLists.txt
- Kconfig
- src1.c
- include/ - component2.h
- main/ - CMakeLists.txt
- src1.c
- src2.c
- build/
esp32标准树结构如图所示,只需按照类似结构创建我们的工程即可。
components” 目录中包含了项目的部分自定义组件,并不是每个项目都需要这种自定义组件,但它有助于构建可复用的代码或者导入第三方(不属于 ESP-IDF)的组件,或者也可以在顶层 CMakeLists.txt 中设置 EXTRA_COMPONENT_DIRS 变量以查找其他指定位置处的组件。
“main” 目录是一个特殊的组件,它包含项目本身的源代码。”main” 是默认名称,CMake 变量 COMPONENT_DIRS 默认包含此组件,但您可以修改此变量。
创建组件:
①idf.py create-compoent name:在当前目录下创建一个组件。
执行命令后出现如下结构,
②idf.py -C components create-component my_component:在组件下创建组件。
具体参考ESP32官网,API指南,构建系统章节。
①在工程创建一个文件夹用于存放自己的组件
例如,我的存放组件的文件夹是my_com
②创建一个bsp的组件,在组件中,include用于存放.h头文件,src用于存放.c文件
③创建一个components.mk文件用于指明路径
④在CMakeLists.txt文件中注册头文件路径和.c文件
模块化文件处理:
①在main目录下创建inc、src文件分别存放.h、.c文件
然后在main目录下的CMakeLists.txt文件夹中
idf_component_register(SRCS "./src/mygpio.c"
"./src/mytimer.c"
INCLUDE_DIRS "."
"./inc")
在SRCS “加入自己的路径下的.c文件”
在INCLUDE_DIRS “加入.h文件”
注:…/标识上一级目录下,./表示本级目录。
②在main目录外创建一个目录专门存放inc、src目录,我以test目录为例子
在test目录下创建一个CMakeLists.txt文件
idf_component_register(SRCS "./src/mygpio.c"
"./src/mytimer.c"
INCLUDE_DIRS "."
"./inc")
注意改变自己的文件路径。
同时还需要更改在最外一层的CMakeLists.txt文件中添加一句话
# For more information about build system see
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html
# The following five lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)
set(EXTRA_COMPONENT_DIRS ./test)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(digital_tub1)
set(EXTRA_COMPONENT_DIRS ./test):设置额外的组件导向,将CMake指向到test目录下寻找我们定义的.c、.h文件。(注意这个语句一定要加,不然CMake找不到路径)
创建一个文件夹引用另一个文件夹的头文件
在app文件夹中引用bsp文件夹的头文件,在app文件夹下创建一个新的cmakelist文件夹,在cmakelist文件夹中加入头文件路径
idf_component_register(SRCS "./src/digital_display.c"
INCLUDE_DIRS "."
"./inc"
"/Bsp./inc")
/是根目录
./是当前目录
…/是父目录
/Bsp./inc:表示在Bsp根目录下的inc当前目录下找头文件
注:仍需set(EXTRA_COMPONENT_DIRS ./test):设置额外的组件导向,将CMake指向到test目录下寻找我们定义的.c、.h文件。
以上纯属个人见解,有误之处还请大家指正。