CMakeLists.txt文件写法(3):使用标准模块

CMake标准模块简介
本文介绍了CMake提供的标准模块及其使用方法。通过简单的 INCLUDE 指令,即可引入如 Boost 等第三方库的支持,极大地简化了项目的配置过程。

cmake提供了很多标准模块,扩展名都是txt.我们可以直接包含进来。就像使用C语言的#include指令一般。

比如:
INCLUDE(FindBoost)
一句话,就告诉了CMake“我们的程序需要Boost”。

 

 

Standard CMake Modules
The following modules are provided with CMake. They can be used with INCLUDE(ModuleName).
 

ESP-IDF中的CMakeLists.txt是项目配置的关键文件,它与menuconfig协同工作,构成了灵活而强大的配置系统,深入理解其工作原理有助于解决开发中的配置问题,构建高效可靠的ESP32应用[^1]。以下是不同场景下CMakeLists.txt使用教程: ### 基本组件CMakeLists.txt 最小组件的CMakeLists.txt示例如下: ```cmake idf_component_register( SRCS "foo.c" "bar.c" INCLUDE_DIRS "include" REQUIRES mbedtls ) ``` 在这个示例中,`SRCS`指定了源文件,`INCLUDE_DIRS`指定了头文件目录,`REQUIRES`指定了该组件依赖的其他组件[^3]。 ### 添加自定义组件并配置CMakeLists.txt 若要在ESP-IDF中添加自定义组件,例如在`commponents`下新建`ZX`文件夹,`ZX`内又有`display`和`module`子文件夹。为使其他模块能调用子文件夹中的C语言函数,需在`zx`文件夹下新建CMakeLists.txt,并添加以下代码: ```cmake #添加头文件目录 idf_component_register( SRC_DIRS "display" "module" INCLUDE_DIRS "display" "module" REQUIRES lvgl lvgl_esp32_drivers ) ``` 这里的`SRC_DIRS`指定了源文件所在目录,`INCLUDE_DIRS`指定了头文件所在目录,`REQUIRES`指定了依赖的组件[^2]。 ### 自定义组件多级子目录时CMakeLists.txt写法 以如下项目结构为例: ```plaintext ESP32 ├─ .gitignore ├─ .vscode │ ├─ configurationCache.log │ ├─ c_cpp_properties.json │ ├─ dryrun.log │ ├─ settings.json │ └─ targets.log ├─ CMakeLists.txt ├─ components │ └─ captive_portal │ ├─ captive_portal.c │ ├─ captive_portal.h │ ├─ CMakeLists.txt │ ├─ component.mk │ ├─ dns_server │ │ ├─ dns_server.c │ │ └─ dns_server.h │ ├─ http_server │ │ ├─ cJSON │ │ │ ├─ cJSON.c │ │ │ └─ cJSON.h │ │ ├─ index.html │ │ ├─ my_http_server.c │ │ ├─ my_http_server.h │ │ └─ url_code │ │ ├─ my_url_code.c │ │ └─ my_url_code.h │ ├─ soft_ap │ │ ├─ console_app │ │ │ ├─ cmd_system │ │ │ │ ├─ cmd_system.c │ │ │ │ └─ cmd_system.h │ │ │ ├─ console_app.c │ │ │ └─ console_app.h │ │ ├─ my_soft_ap.c │ │ └─ my_soft_ap.h │ └─ wifi_station │ ├─ wifi_station.c │ └─ wifi_station.h ├─ main │ ├─ app_main.c │ ├─ CMakeLists.txt │ └─ component.mk ├─ Makefile ├─ README.md └─ sdkconfig ``` 对于多级子目录的组件,在相应的组件目录(如`captive_portal`)下的CMakeLists.txt需要正确配置源文件和头文件路径以及依赖项。例如,在`captive_portal`的CMakeLists.txt中,要包含所有子目录的源文件和头文件信息,并指定依赖的组件。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值