GL/glew.h: нет такого файла или каталога в glew.c

#c #cmake #glew

#c #cmake #glew

Вопрос:

Когда я пытаюсь скомпилировать свою программу, я получаю эту ошибку

 C:...CLionProjectsRadixvendorsglew-2.1.0srcglew.c:34:10: fatal error: GL/glew.h: No such file or directory
 #include <GL/glew.h>
          ^~~~~~~~~~~
  

Ошибка в коде библиотеки, что я здесь делаю не так?

Структура моего проекта выглядит следующим образом:

 Radix
|- Radix-core
   |- cpp code..
|- vendors
   |- CMakeLists.txt
   |- glew-2.1.0
   |- Other libs..
- CMakeLists.txt
  

CMakeLists.txt (Только отдельные части)

 add_subdirectory(vendors)

add_definitions(-DTW_STATIC -DTW_NO_LIB_PRAGMA -DTW_NO_DIRECT3D -DGLEW_STATIC -D_CRT_SECURE_NO_WARNINGS)

# Including GLEW
include_directories(vendors/glew-2.1.0/include)
set(ALL_LIBS opengl32 glfw GLEW_210)

target_link_libraries(Radix ${ALL_LIBS})
  

vendors/CMakeLists.txt (Только отдельные части)

 add_definitions(-DTW_STATIC -DTW_NO_LIB_PRAGMA -DTW_NO_DIRECT3D -DGLEW_STATIC -D_CRT_SECURE_NO_WARNINGS)

### GLEW ###
set(GLEW_HEADERS)
set(GLEW_SOURCE glew-2.1.0/src/glew.c)
set(GLEW_INCLUDE glew-2.1.0/include)

add_library(GLEW_210 ${GLEW_SOURCE} ${GLEW_INCLUDE})
target_link_libraries(GLEW_210 ${OPENGL_LIBRARY} ${EXTRA_LIBS})
  

Комментарии:

1. А GL/glew.h находится в разделе vendors/glew-2.1.0/include ?

2. Да, GL/glew.h находится в vendors/glew-2.1.0/include

Ответ №1:

Добавление вашего включаемого каталога к исходным файлам для GLEW_210 ничего не дает. Добавьте его в качестве ОБЩЕДОСТУПНОГО каталога include, чтобы компиляция glew.c также имела доступ к заголовкам glew:

 target_include_directories(GLEW_210 PUBLIC glew-2.1.0/include)
  

Это также распространяет каталог include на любые целевые объекты, которые связаны с GLEW_210, поэтому вы можете затем удалить include_directories инструкцию в своем основном CMakeLists.txt