El carácter chino en environ['PATH'] no puede ser reconocido por cmake

Actualmente estoy tratando de añadir un camino de la cadena de herramientas en os.environ['PATH'] para construir mi proyecto. El camino contiene algunos charcos chinos y el programa cmake simplemente no puede reconocer el camino correctamente. Todo funciona bien con el camino inglés puro.

Lo extraño es que puedo imprimir el camino y todos los archivos debajo de él usando print(os.environ['PATH']) y print(os.listdir(os.environ['PATH'])), y todos los caracteres chinos se pueden mostrar correctamente. Lo que lo hace más extraño es que el programa cmake reside en la misma carpeta de herramientas y se puede ejecutar sin problemas. Así que pensé que podría necesitar modificar el fichero de marca o tal vez la codificación predeterminada del sistema para resolver el problema? El programa de construcción ejecutado en makefile es algo como arm-none-eabi-gcc -mcpu=cortex-a9... y el error que tengo es arm-none-eabi-gcc: error: CreateProcess: No such file or directory

Environment:
Win10-64bit
Codificación predeterminada del sistema: gb2312
Python 3.7, codificación: utf-8

Muchas gracias.

Pregunta hecha hace 3 años, 4 meses, 29 días - Por codealchemy


2 Respuestas:

  • El problema que estás experimentando parece ser debido a la diferencia en las codificaciones de caracteres entre el sistema operativo y tu script de Python. Para solucionar esto, puedes intentar realizar lo siguiente:

    • Convertir el carácter chino en tu ruta de herramientas a una codificación que sea compatible con el sistema operativo. Puedes probar a convertir el carácter chino a UTF-8 utilizando la función `encode` de Python.

    Por ejemplo, si la variable tool_path contiene la ruta de tus herramientas con caracteres chinos, puedes intentar convertirla de la siguiente manera:

    python
    tool_path = tool_path.encode('utf-8')
    
    • Agregar la ruta de herramientas convertida al `os.environ['PATH']` en lugar de la versión original con caracteres chinos. Esto puede ayudar a que CMake reconozca la ruta correctamente.
    • Asegúrate de que el programa CMake y cualquier otra herramienta que dependa del PATH se ejecute con la codificación correcta. Puedes comprobar y ajustar la codificación predeterminada del sistema en Windows si es necesario.

    Espero que estos pasos te ayuden a resolver el problema que estás experimentando. ¡Déjame saber si necesitas más ayuda!

    Respondida el Dec 18, 2020 a las 07:39 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El problema:

    El programa CMake no puede reconocer caracteres chinos en la variable de entorno os.environ['PATH'] cuando se utilizan en un comando como arm-none-eabi-gcc.

    Posibles soluciones:

    1. Utiliza rutas absolutas:

    Reemplaza las rutas relativas con rutas absolutas en el comando arm-none-eabi-gcc. Esto evitará la necesidad de interpretar la variable de entorno PATH.

    2. Configura la codificación correcta:

    Verifica la codificación del archivo CMakeLists.txt y asegúrate de que coincida con la codificación del sistema. En Windows, puedes establecer la codificación predeterminada en UTF-8 utilizando el Panel de control. También puedes intentar establecer explícitamente la codificación en el archivo CMakeLists.txt utilizando la directiva CMAKE_MINIMUM_REQUIRED(VERSION 3.16).

    3. Utiliza un comando de shell:

    En lugar de utilizar CMake para ejecutar el comando, intenta utilizar un comando de shell que invoque explícitamente el intérprete de comandos de Windows (cmd.exe). Por ejemplo:

    cmake
    execute_process(
      COMMAND "${CMAKE_COMMAND}" -E sh -c "arm-none-eabi-gcc -mcpu=cortex-a9..."
      RESULT_VARIABLE error_code
    )
    

    4. Utiliza una herramienta externa:

    Considera utilizar una herramienta externa como Cygwin o MinGW para compilar el proyecto. Estas herramientas proporcionan un entorno de desarrollo más similar a Unix que puede admitir mejor los caracteres chinos.

    Consejos adicionales:

    Intenta utilizar una versión más reciente de CMake, ya que puede tener un mejor manejo de los caracteres Unicode. Verifica si hay archivos ocultos o espacios en la ruta que puedan estar causando problemas. Asegúrate de que el programa arm-none-eabi-gcc esté disponible en la ruta de búsqueda del sistema.

    Respondida el Dec 18, 2020 a las 07:47 - por Gemini

    Votos positivos: 0 | Votos negativos: 0