You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下VS Code构建ESP32 C3时无法生成汇编清单求助

ESP32-C3构建时自动生成汇编清单的解决方法

问题根源在于你修改的c_cpp_properties.json是VS Code C/C++插件的代码索引配置,不影响实际构建流程;compile_commands.json是CMake自动生成的构建命令清单,手动修改会被后续构建覆盖。正确的做法是通过CMake配置添加编译参数——因为ESP-IDF基于CMake构建。

具体解决步骤

方法一:项目本地CMake配置(推荐)

在项目根目录的CMakeLists.txt中,在project(...)语句之后添加以下配置:

# 为C语言源文件添加汇编清单生成参数
target_compile_options(${PROJECT_NAME} PRIVATE
    $<$<COMPILE_LANGUAGE:C>:-Wa,-a,-ad>
)

# 若需要为汇编源文件也生成清单,添加以下配置
target_compile_options(${PROJECT_NAME} PRIVATE
    $<$<COMPILE_LANGUAGE:ASM>:-Wa,-a,-ad>
)

如果希望对所有编译语言生效,也可以用更简洁的写法:

add_compile_options(-Wa,-a,-ad)

添加完成后,执行以下命令重新构建:

idf.py fullclean
idf.py build

构建完成后,汇编清单文件(后缀为.lst)会生成在build/CMakeFiles/${PROJECT_NAME}.dir目录下的对应源文件子目录中,与目标文件(.o)同路径。

方法二:自定义清单输出路径(可选)

如果希望将所有清单文件统一输出到指定目录,可以调整参数并添加目录创建逻辑:

# 创建清单输出目录
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/assembly_lists)

# 为C文件指定清单输出路径
target_compile_options(${PROJECT_NAME} PRIVATE
    $<$<COMPILE_LANGUAGE:C>:-Wa,-a,-ad,-o=${CMAKE_CURRENT_BINARY_DIR}/assembly_lists/$<TARGET_PROPERTY:NAME>.lst>
)

这样所有.lst文件会集中生成在build/assembly_lists目录下。

注意事项

  • 不要直接修改compile_commands.json,每次执行idf.py build时CMake会重新生成该文件,手动修改的内容会丢失。
  • 全局修改ESP-IDF的CMake配置不推荐,因为后续更新ESP-IDF会覆盖相关文件,优先使用项目本地配置。

内容的提问来源于stack exchange,提问作者Jon Anthony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:28:28