Задать вопрос
@Redens

C++ CMake Как исправить ошибку?

Вот такая ошибка возникает в CLion после запуска проекта
====================[ Build | ArcanumEngine | Debug ]===========================
"D:\Program Files\JetBrains\CLion 2023.1.5\bin\cmake\win\x64\bin\cmake.exe" --build D:\Проекты\ArcanumEngine\cmake-build-debug --target ArcanumEngine -j 6
[1/11] Building C object library/glfw/src/CMakeFiles/glfw.dir/input.c.obj
FAILED: library/glfw/src/CMakeFiles/glfw.dir/input.c.obj 
"D:\Program Files\JetBrains\CLion 2023.1.5\bin\mingw\bin\gcc.exe" -DUNICODE -DWINVER=0x0501 -D_GLFW_USE_CONFIG_H -D_UNICODE -ID:/Проекты/ArcanumEngine/library/glfw/include -ID:/Проекты/ArcanumEngine/library/glfw/src -ID:/Проекты/ArcanumEngine/cmake-build-debug/library/glfw/src -g -fdiagnostics-color=always -Wall -std=gnu99 -Wdeclaration-after-statement -MD -MT library/glfw/src/CMakeFiles/glfw.dir/input.c.obj -MF library\glfw\src\CMakeFiles\glfw.dir\input.c.obj.d -o library/glfw/src/CMakeFiles/glfw.dir/input.c.obj -c D:/Проекты/ArcanumEngine/library/glfw/src/input.c
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwGetInputMode':
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:492:1: error: converting to execution character set: Illegal byte sequence
  492 |     assert(window != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~~                         
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwSetInputMode':
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:517:1: error: converting to execution character set: Illegal byte sequence
  517 |     assert(window != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~~                         
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwGetKey':
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:648:1: error: converting to execution character set: Illegal byte sequence
  648 |     assert(window != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~~                         
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwGetMouseButton':
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:671:1: error: converting to execution character set: Illegal byte sequence
  671 |     assert(window != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~~                         
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwGetCursorPos':
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:694:1: error: converting to execution character set: Illegal byte sequence
  694 |     assert(window != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~~                         
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwSetCursorPos':
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:717:1: error: converting to execution character set: Illegal byte sequence
  717 |     assert(window != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~~                         
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwCreateCursor':
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:750:1: error: converting to execution character set: Illegal byte sequence
  750 |     assert(image != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~                          
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:751:1: error: converting to execution character set: Illegal byte sequence
  751 |     assert(image->pixels != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwSetCursor':
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:843:1: error: converting to execution character set: Illegal byte sequence
  843 |     assert(window != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~~                         
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwSetKeyCallback':
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:855:1: error: converting to execution character set: Illegal byte sequence
  855 |     assert(window != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~~                         
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwSetCharCallback':
D:/Проекты/ArcanumEngine/library/glfw/src/input.c:865:1: error: converting to execution character set: Illegal byte sequence
  865 |     assert(window != NULL);
      | ^   ~~~~~~~~~~~~~~~~~~~~~~~                         
D:/Проекты/ArcanumEngine/library/glfw/src/input.c: In function 'glfwSetCharModsCallback':               
ninja: build stopped: subcommand failed.

Не могу понять в чем дело, но догадываюсь, что что-то с CMake
СMAKE Файл:
cmake_minimum_required(VERSION 3.25)
project(ArcanumEngine)

add_executable(${PROJECT_NAME} main.cpp)

add_subdirectory(library/glfw)
add_subdirectory(library/glew)

target_include_directories(${PROJECT_NAME}
        PUBLIC library/glew/include
        PUBLIC library/glfw/include
)

target_link_directories(${PROJECT_NAME}
        PRIVATE library/glew/src
        PRIVATE library/glfw/src
        )

target_link_libraries(${PROJECT_NAME}
        glew
        glfw
        )
  • Вопрос задан
  • 469 просмотров
Подписаться 2 Средний 5 комментариев
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Тут проблема не в CMake и не в CLion. Это проблема MinGW и кодировки файлов с исходным кодом.

Файлы сейчас сохранены в какой-то другой кодировке, когда GCC в составе MinGW по умолчанию ожидает кодировку UTF-8.
Достаточно будет сконвертировать файлы в кодировку UTF-8 и MinGW начнет их переваривать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Не могу понять в чем дело

Судя по всему в макросе assert использован текст с какими-то забавными символами. Два очевидных способа решения:
- можно эти строки удалить, в корректно написанной программе они ни на что не влияют.
- можно разобраться с тем, что не так внутри assert. Начать можно, например, выполнив вместо компиляции препроцессирование (заменив в командной строке вызова gcc -c на -E) и почитав внимательно препроцессированный код в местах на которые ругается компилятор.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы