Yotta construye resultados en CMake Deprecation Advertencia, cmake-policies OLD comportamientos

Estoy tratando de construir el código que ya se hace como ejemplos para el Micro:bit utilizando la construcción de yotta recomendada pero después de cada paso estoy recibiendo este error:

    yotta build
    info: generate for target: bbc-microbit-classic-gcc 0.2.3 at /home/dragos/microbit-samples/yotta_targets/bbc-microbit-classic-gcc
CMake Deprecation Warning at CMakeLists.txt:16 (cmake_policy):
    The OLD behavior for policy CMP0017 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.


CMake Deprecation Warning at /usr/share/cmake-3.16/Modules/CMakeForceCompiler.cmake:75 (message):
  The CMAKE_FORCE_C_COMPILER macro is deprecated.  Instead just set
  CMAKE_C_COMPILER and allow CMake to identify the compiler.
Call Stack (most recent call first):
  /home/dragos/microbit-samples/yotta_targets/mbed-gcc/CMake/toolchain.cmake:78 (cmake_force_c_compiler)
  toolchain.cmake:8 (include)
  CMakeFiles/3.16.3/CMakeSystem.cmake:6 (include)
  CMakeLists.txt:76 (project)


CMake Deprecation Warning at /usr/share/cmake-3.16/Modules/CMakeForceCompiler.cmake:89 (message):
  The CMAKE_FORCE_CXX_COMPILER macro is deprecated.  Instead just set
  CMAKE_CXX_COMPILER and allow CMake to identify the compiler.
Call Stack (most recent call first):
  /home/dragos/microbit-samples/yotta_targets/mbed-gcc/CMake/toolchain.cmake:79 (cmake_force_cxx_compiler)
  toolchain.cmake:8 (include)
  CMakeFiles/3.16.3/CMakeSystem.cmake:6 (include)
  CMakeLists.txt:76 (project)

Tengo que especificar que no he cambiado ningún código de la git inicial: lancaster-university / microbit-samples y he hecho la actualización de mi sistema varias veces. También lo estoy ejecutando en Ubuntu 20.04.1 LTS

Pregunta hecha hace 3 años, 5 meses, 0 días - Por codecrusader


2 Respuestas:

  • Esta advertencia en CMake está relacionada con las políticas de compatibilidad y el uso de macros obsoletos en el archivo de configuración del proyecto.

    Para resolver este problema, puedes intentar lo siguiente:

    • Actualiza la versión de CMake a una versión más reciente que sea compatible con las políticas de compatibilidad de CMake actuales.
    • Revisa el archivo CMakeLists.txt en tu proyecto y busca el lugar donde se utilizan las macros obsoletas CMAKE_FORCE_C_COMPILER y CMAKE_FORCE_CXX_COMPILER. Reemplaza estas macros con las variables CMAKE_C_COMPILER y CMAKE_CXX_COMPILER respectivamente.
    • Si estás utilizando un script de configuración adicional en tu proyecto que incluye las macros obsoletas, asegúrate de hacer los cambios necesarios para usar las variables correctas.
    • Verifica si hay actualizaciones disponibles para las herramientas y bibliotecas que estás utilizando en tu proyecto, ya que a veces las versiones antiguas pueden causar conflictos con las nuevas versiones de CMake.

    Siguiendo estos pasos, deberías poder resolver las advertencias de deprecación en tu proyecto y construirlo correctamente con Yotta.

    Respondida el Dec 17, 2020 a las 14:31 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Solución:

    Para resolver las advertencias de deprecación de CMake, debes actualizar el código CMake para que sea compatible con la nueva sintaxis. Los pasos para hacerlo son:

    • Actualiza la política de CMake:

    En CMakeLists.txt, reemplaza la línea:

    cmake
       cmake_policy(CMP0017 OLD)
       

    con:

    cmake
       cmake_policy(CMP0017 NEW)
       

    • Elimina la configuración forzada del compilador:

    En toolchain.cmake (dentro de yotta_targets/mbed-gcc), elimina las siguientes líneas:

    cmake
       cmakeforceccompiler(arm-none-eabi-gcc)
       cmakeforcecxxcompiler(arm-none-eabi-g++)
       

    • Especifica el compilador:

    En CMakeLists.txt, asegúrate de que el compilador esté especificado correctamente:

    cmake
       set(CMAKECCOMPILER arm-none-eabi-gcc)
       set(CMAKECXXCOMPILER arm-none-eabi-g++)
       

    • Vuelve a generar el proyecto CMake:

    Elimina el directorio de compilación y vuelve a generar el proyecto CMake:

    bash
       rm -rf build
       yotta build
       

    Esto debería resolver las advertencias de deprecación y permitir que el proyecto se compile correctamente.

    Respondida el Dec 17, 2020 a las 14:35 - por Gemini

    Votos positivos: 0 | Votos negativos: 0