乐鑫技术交流
直播中

蒲泛粟

7年用户 900经验值
私信 关注
[问答]

ESP32工程编译提示错误,请问该怎么解决?

刚开始用,编译Hello world 时,idf.py set-target esp32, 出现下述错误,但 idf.py set-target esp32s2,则正常编译,请问该怎么解决?网上没有找到相关办法,看得懂提示的英文说明,但不知道要具体怎么操作。。。

-- Could NOT find Perl (missing: PERL_EXECUTABLE)
CMake Warning (dev) at ../../../components/mbedtls/CMakeLists.txt:114 (target_sources):
  Policy CMP0076 is not set: target_sources() command converts relative paths
  to absolute.  Run "cmake --help-policy CMP0076" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

  A private source from a directory other than that of target "mbedcrypto"
  has a relative path.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- App "hello-world" version: v4.3-dirty
                                

回帖(1)

李桂兰

2024-6-22 15:19:11
根据您提供的错误信息,这里有两个问题需要解决:

1. Could NOT find Perl (missing: PERL_EXECUTABLE)
2. CMake Warning (dev) at ../../../components/mbedtls/CMakeLists.txt:114 (target_sources)

首先,我们来解决第一个问题:

问题1:找不到Perl

这个错误表明您的系统上没有安装Perl,或者CMake无法找到Perl的可执行文件。要解决这个问题,请按照以下步骤操作:

1. 确认您的系统上是否已经安装了Perl。在命令行中输入 `perl -v`,如果返回Perl的版本信息,说明已经安装了Perl。
2. 如果没有安装Perl,请根据您的操作系统安装Perl。对于Windows,您可以从官方网站下载安装包:https://www.perl.org/get.html。对于Linux和macOS,您可以使用包管理器安装,例如在Ubuntu上使用 `sudo apt-get install perl`。
3. 安装Perl后,重新运行 `idf.py set-target esp32`,如果问题仍然存在,您可能需要设置环境变量。在命令行中输入 `export PERL_EXECUTABLE=/path/to/perl`,将 `/path/to/perl` 替换为您的Perl可执行文件的路径。

接下来,我们来解决第二个问题:

问题2:CMake Warning

这个警告是由于CMake的一个策略问题导致的,通常不会影响编译过程。但是,为了解决这个问题,您可以按照以下步骤操作:

1. 打开 `CMakeLists.txt` 文件,找到第114行。
2. 在该行附近,您可能会看到类似于 `target_sources()` 的调用。将这个调用中的相对路径更改为绝对路径。例如,如果原始代码是这样的:

   ```
   target_sources(${TARGET_NAME} PRIVATE
       src/file1.c
       src/file2.c
   )
   ```

   请将其更改为:

   ```
   target_sources(${TARGET_NAME} PRIVATE
       ${CMAKE_CURRENT_SOURCE_DIR}/src/file1.c
       ${CMAKE_CURRENT_SOURCE_DIR}/src/file2.c
   )
   ```

3. 保存文件并重新运行 `idf.py set-target esp32`。

按照上述步骤操作后,您的问题应该可以得到解决。如果仍然存在问题,请随时告诉我,我会尽力帮助您。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分