乐鑫技术交流
直播中

李斌

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

Eclips编译警告,每次都有这个warning,为什么?

Eclips编译警告,每次都有这个warning,看起来不顺眼,
不知道哪里有问题,编译结果是没问题的。
报错的中间信息如下,红色已标注:

............................
-- Found PythonInterp: C:/Users/dell/.espressif/python_env/idf4.3_py3.8_env/Scripts/python.exe (found version "3.8.7")
-- Could NOT find Perl (missing: PERL_EXECUTABLE)


CMake Warning (dev) at D:/esp-idf/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 "gatt_server_demos" version: 1
................................

然后按照说的,去执行了 "cmake --help-policy CMP0076" 命令,显示的结果如下,看不懂,求大佬指导一下:
D:esp-idf>cmake --help-policy CMP0076
CMP0076
-------

The ``target_sources()`` command converts relative paths to absolute.

In CMake 3.13 and above, the ``target_sources()`` command now converts
relative source file paths to absolute paths in the following cases:

* Source files are added to the target's ``INTERFACE_SOURCES``
  property.
* The target's ``SOURCE_DIR`` property differs from
  ``CMAKE_CURRENT_SOURCE_DIR``.

A path that begins with a generator expression is always left unmodified.

This policy provides compatibility with projects that have not been updated
to expect this behavior.  The ``OLD`` behavior for this policy is to leave
all relative source file paths unmodified.  The ``NEW`` behavior of this
policy is to convert relative paths to absolute according to above rules.

This policy was introduced in CMake version 3.13.  CMake version
3.16.4 warns when the policy is not set and uses ``OLD`` behavior.
Use the ``cmake_policy()`` command to set it to ``OLD`` or ``NEW``
explicitly.

.. note::
  The ``OLD`` behavior of a policy is
  ``deprecated by definition``
  and may be removed in a future version of CMake.

D:esp-idf>
               

回帖(1)

郭中

2024-6-21 16:42:36
从您提供的信息来看,这个编译警告主要涉及到以下几个方面:

1. **Python 版本**:Eclipse 已经找到了 Python 解释器,位于 `C:/Users/dell/.espressif/python_env/idf4.3_py3.8_env/Scripts/python.exe`,版本为 3.8.7。

2. **Perl 未找到**:编译过程中提示找不到 Perl,因为没有设置 `PERL_EXECUTABLE`。Perl 是一种脚本语言,有时在编译过程中可能会用到。如果您的项目不需要 Perl,这个警告可以忽略。

3. **CMake 警告**:在 `D:/esp-idf/components/mbedtls/CMakeLists.txt` 文件的第 114 行,出现了一个 CMake 警告。这个警告是由于 `Policy CMP0076` 没有设置导致的。这个政策与 `target_sources` 命令的使用有关。

要解决这个问题,您可以尝试以下方法:

1. **忽略警告**:如果这个警告不影响您的项目编译和运行,您可以选择忽略它。在 Eclipse 中,您可以在问题视图中过滤掉这些警告。

2. **安装 Perl**:如果您的项目需要使用 Perl,您可以安装 Perl 并设置 `PERL_EXECUTABLE` 环境变量。这样,CMake 就可以找到 Perl 并正常编译。

3. **设置 CMake 政策**:关于 `Policy CMP0076` 的警告,您可以在 CMakeLists.txt 文件中添加以下代码来设置政策:

   ```cmake
   cmake_policy(SET CMP0076 NEW)
   ```

   这将设置 `Policy CMP0076` 为新的策略,以解决警告问题。

4. **更新 CMake 版本**:如果您使用的 CMake 版本较低,可能会导致一些兼容性问题。尝试更新到最新版本的 CMake,看看是否能解决问题。

5. **检查项目依赖**:检查您的项目是否依赖于某些特定的库或工具,这些库或工具可能需要 Perl 或其他环境变量。确保所有依赖都已正确安装和配置。

总之,这个编译警告可能不会影响您的项目运行,但为了确保项目的稳定性和可维护性,建议您尝试上述方法解决问题。
举报

更多回帖

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