完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
按编程指南,在 application CMakeLists.txt 文件中, including project.cmake之前,增加了set(PROJECT_VER "0.1.0.1") 。
但是不起作用,编译信息看到的APP版本号,以及程序里用 esp_ota_get_partition_description() 读出的版本号,都是一个串, 诸如:version: 761849b-dirty,像是随机生成的。请问版本号该怎么指定才有效?谢谢! |
|
相关推荐
1个回答
|
|
您好!关于您的问题,我将为您提供一个详细的解决方案。首先,我们需要了解ESP-IDF框架的版本控制机制以及如何在CMakeLists.txt文件中正确设置APP版本号。
1. 版本号的格式 ESP-IDF框架支持语义化版本号(Semantic Versioning),格式为:主版本号.次版本号.修订号。例如:1.0.0。此外,还可以添加一个可选的构建元数据,例如:1.0.0+001。 2. 设置APP版本号 在CMakeLists.txt文件中设置APP版本号的正确方法是使用`set`命令,然后在`project`命令中指定版本号。以下是设置版本号的示例: ```cmake # 设置项目名称和版本号 set(PROJECT_NAME "my_project") set(PROJECT_VER "0.1.0.1") # 导入项目 include($ENV{IDF_PATH}/tools/cmake/project.cmake) ``` 3. 编译信息和程序中的版本号 在编译过程中,ESP-IDF会生成一个名为`app_version`的分区,其中包含了APP的版本信息。您可以使用`esp_ota_get_partition_description()`函数读取这个分区的描述信息,以获取版本号。 然而,您提到的版本号看起来像是一个哈希值(例如:761849b-dirty),这可能是因为您的项目使用了Git作为版本控制系统,并且ESP-IDF自动从Git获取了提交哈希作为版本号。这种情况下,您需要在CMakeLists.txt文件中显式设置版本号,以覆盖自动获取的版本号。 4. 确保版本号生效 要确保设置的版本号生效,请按照以下步骤操作: - 确保在`CMakeLists.txt`文件中正确设置了版本号,如上文示例所示。 - 确保在`project.cmake`文件之前设置了版本号。 - 清理项目并重新编译,以确保新的版本号被正确应用。 5. 检查版本号 编译完成后,您可以使用以下命令检查APP的版本号: ```c #include "esp_ota_ops.h" void check_app_version() { const esp_partition_t *partition = esp_ota_get_next_update_partition(NULL); const char *version = esp_ota_get_partition_description(partition); printf("APP version: %sn", version); } ``` 将上述代码添加到您的项目中,并在适当的位置调用`check_app_version()`函数,以查看APP的版本号。 希望这些信息能帮助您解决问题。如有其他问题,请随时提问。祝您编程愉快! |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
435浏览 5评论
441浏览 4评论
410浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 22:35 , Processed in 0.665853 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号