CMake путь со специальными символами - PullRequest
0 голосов
/ 20 февраля 2020

Я использую CLion, и всякий раз, когда я работаю над проектом, он не может быть в пути со специальными символами (такими как º , ç , ã ...), сбой со следующим сообщением:

The C compiler

    "C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/gcc.exe"

  is not able to compile a simple test program.

1 Ответ

1 голос
/ 20 февраля 2020

Программа MinGW make не обрабатывает символы не ASCII плавно. Я смог воспроизвести это на своем компьютере, используя путь, содержащий ñ:

  The C compiler

    "C:/apps/MinGW/bin/gcc.exe"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: C:/workspace/peña/build2/CMakeFiles/CMakeTmp

    Run Build Command(s):C:/apps/MinGW/bin/mingw32-make.exe cmTC_fe654/fast && C:/apps/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_fe654.dir\build.make CMakeFiles/cmTC_fe654.dir/build
    mingw32-make.exe[1]: Entering directory 'C:/workspace/pe±a/build2/CMakeFiles/CMakeTmp'
    Building C object CMakeFiles/cmTC_fe654.dir/testCCompiler.c.obj
    C:\apps\MinGW\bin\gcc.exe    -o CMakeFiles\cmTC_fe654.dir\testCCompiler.c.obj   -c C:\workspace\pe├▒a\build2\CMakeFiles\CMakeTmp\testCCompiler.c
    gcc.exe: error: C:\workspace\pe├▒a\build2\CMakeFiles\CMakeTmp\testCCompiler.c: No such file or directory
    gcc.exe: fatal error: no input files
    compilation terminated.
    CMakeFiles\cmTC_fe654.dir\build.make:81: recipe for target 'CMakeFiles/cmTC_fe654.dir/testCCompiler.c.obj' failed
    mingw32-make.exe[1]: *** [CMakeFiles/cmTC_fe654.dir/testCCompiler.c.obj] Error 1
    mingw32-make.exe[1]: Leaving directory 'C:/workspace/pe±a/build2/CMakeFiles/CMakeTmp'
    Makefile:137: recipe for target 'cmTC_fe654/fast' failed
    mingw32-make.exe: *** [cmTC_fe654/fast] Error 2

Примечание. CMake переключается на временный каталог сборки с правильным путем, но когда выполняется mingw32-make.exe, путь теперь искажен:

C:/workspace/pe±a/build2/CMakeFiles/CMakeTmp

Самый простой способ избежать этой проблемы - просто изменить путь вашего проекта, чтобы он не содержал не-ASCII символов.

Другой вариант - использовать другой генератор (отличный от MinGW Makefiles). Например, Visual Studio настраивает и создает правильно, даже если символы не ASCII находятся в пути проекта:

> cmake -G"Visual Studio 16 2019" ..
Re-run cmake no build system arguments
C:/workspace/peña
-- The CXX compiler identification is MSVC 19.23.28106.4
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/workspace/peña/build
...